我只是想将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)值。我不确定我在哪里出错,有人指出我正确的方向?
答案 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];