将CLLocationCoordinates2D转换为NSValue

时间:2014-03-01 11:20:28

标签: ios objective-c cllocation

我只是想将CLLocationCoordinates转换为NSValue,以便在稍后在我的应用中带回的数组中使用。这是我的代码:

  NSUInteger count = [self.locations count];
    CLLocationCoordinate2D coordinates[count];
    for (NSInteger i = 0; i < count; i++) {
        coordinates[i] = [(CLLocation *)self.locations[i] coordinate];
        NSValue *locationValue = [NSValue valueWithMKCoordinate:coordinates[i]];
        [_locationsArray addObject:locationValue];
        NSLog(@"location = %@", _locationsArray);
    }

但是NSLog显示数组中填充了(Null)值。我不确定我在哪里出错,有人指出我正确的方向?

4 个答案:

答案 0 :(得分:2)

我在coordinates数组中没有看到任何需要。你可能没有初始化它。 尝试:

_locationsArray = [NSMutableArray array];
for (CLLocation *location in self.locations) {
    NSValue *locationValue = [NSValue valueWithMKCoordinate: location.coordinate];
    [_locationsArray addObject:locationValue];
    NSLog(@"location = %@", _locationsArray);
}

答案 1 :(得分:1)

您好,您可以通过如下所示将CLLocationCoordinates2D转换为NSValue,但是您是否检查过坐标是否包含任何值。

NSValue *value = [NSValue valueWithMKCoordinate:coordinate];

由于

答案 2 :(得分:0)

尝试:

NSValue *locationValue = [NSValue valueWithBytes:&coordinates[i] objCType:@encode(CLLocationCoordinate2D)];

答案 3 :(得分:0)

可能是您没有初始化数组。这就是为什么当你记录它时它是零的。

_locationsArray = [[NSMutableArray alloc] init];