将坐标中的 CLLocation 纬度插入 NSMutableArray

inserting CLLocation latitude from coordinate into NSMutable Array

我正在做一些愚蠢的事情,但不确定是什么。这是我的代码:

NSMutableArray *latitudes = [[NSMutableArray alloc] init];


NSMutableArray *locationArray = [NSMutableArray array];
for (CLLocation *location in self.allPins) {
    Location *locationObject = [NSEntityDescription insertNewObjectForEntityForName:@"Location"
                                                             inManagedObjectContext:self.managedObjectContext];

    locationObject.timestamp = location.timestamp;
    locationObject.latitude = [NSNumber numberWithDouble:location.coordinate.latitude];
    locationObject.longitude = [NSNumber numberWithDouble:location.coordinate.longitude];
    [locationArray addObject:locationObject];
    [latitudes addObject:[NSNumber numberWithFloat: location.coordinate.latitude]];
    NSLog(@"here is the array for latitudes count: %d", latitudes.count);
    NSLog(@"here is the value for first latitude: %d", latitudes[0]);
}

self.allPins 保存从 CLLocationManager 收到的所有位置。一旦用户完成移动并想要保存,我 运行 上面的代码片段将轨迹加载到 CoreData class 中以保存在用户的 phone 中并加载到数组中以上传数据在线。我想要一组纬度经度等,但这行不通。虽然我可以将信息很好地插入到我的 CoreData 对象中,但我似乎无法简单地从 CLLocation 坐标中提取 doubles/floats(尝试了两种方法,但我认为它不应该有所作为?)。当我 运行 以下代码时,我得到了纬度数组的计数,但我得到的值是无意义的:

2015-05-26 15:25:22.934 MileRun[665:196255] here is the value for first latitude: 426649664

您没有打印 NSNumber 的值,但我认为是 NSNumber 的地址(如果不是 426649664 在他的日志中,有人可能会在这里纠正我)。

NSLog(@"here is the value for first latitude: %d", latitudes[0]);改为

NSLog(@"here is the value for first latitude: %f",纬度[0].floatValue);

NSLog(@"here is the value for first latitude: %@", latitudes[0]);

更多信息编辑: 格式说明符 %d 用于整数。您可以使用对象的格式说明符打印出 NSNumber,即 %@。这将允许您使用 NSLog(@"number = %@", latitudes[0]) 登录并以这种方式获取 NSNumber 的值。

此外,如有疑问,请在代码中设置断点并使用调试器检查数组中的对象。