Search code examples
objective-carrayspolygoncgpointpolygons

Trying to build polygon from NSString


So, I'm trying to build an array of CGPoints by breaking an NSString, typically look like this:

31.241854,34.788867;31.241716,34.788744;31.242547,34.787585;31.242661,34.787719

Using this code:

- (NSMutableArray *)buildPolygon:(NSString *)polygon
{
    NSMutableArray *stringArray = [[NSMutableArray alloc] init];
    [stringArray addObject:[polygon componentsSeparatedByString:@";"]];
    NSMutableArray *polygonArray = [[NSMutableArray alloc] init];

    for (int i=0; i < polygonArray.count; i++)
    {
        NSArray *polygonStringArray = [[NSArray alloc] init];
        polygonStringArray = [[stringArray objectAtIndex:i] componentsSeparatedByString:@","];
        CGFloat xCord = [[polygonStringArray objectAtIndex:0] floatValue];
        CGFloat yCord = [[polygonStringArray objectAtIndex:1] floatValue];
        CGPoint point = CGPointMake(xCord, yCord);
        [polygonArray addObject:[NSValue valueWithCGPoint:point]];
    }

    NSLog(@"return polygonArray: %@", polygonArray);
    return polygonArray;
}

But eventually I get an empty array. What I'm doing wrong?


Solution

  • You're defining polygonArray as an empty array just before the start of your for loop. You should define polygonArray like:

    NSArray *polygonArray = [polygon componentsSeparatedByString:@";"];
    

    And you don't even need to bother with that stringArray variable.