在核心数据中存储 CLLocation 坐标
Storing CLLocationCoordinates in Core Data
我在存储 MKMapItem
时遇到了一个问题,我可以通过查看编译器警告来解决这个问题,但我不明白 为什么 我是能够解决它或者如果我使用 "best practices".
我有一个 Object 模型,该模型将 MKMapItem
中的纬度和经度坐标分别存储为 NSManagedObject
中的 double
s。当我转到 Editor\Create NSManagedObject Subclass
并创建我的 class 时,header 看起来像这样:
@class LocationCategory;
@interface PointOfInterest : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * address;
// Xcode spat out NSNumber instead of the double specified in the model setup screen
@property (nonatomic, retain) NSNumber * latitude;
@property (nonatomic, retain) NSNumber * longitude;
@property (nonatomic, retain) NSString * note;
@property (nonatomic, retain) LocationCategory *locationCategory;
@end
一切都很好,直到我尝试将 object 添加到我的 managedObjectContext
我收到了这些警告:
Assigning to 'NSNumber *' from incompatible type 'CLLocationDegrees' (aka 'double')
这些行:
newPOI.latitude = self.item.placemark.location.coordinate.latitude;
newPOI.longitude = self.item.placemark.location.coordinate.longitude;
我通过更改 PointOfInterest : NSManagedObject
subclass:
修复了它
@property (nonatomic) double latitude;
@property (nonatomic) double longitude;
这是让编译器满意的最好方法还是有更好的方法?
我建议您将 PointOfInterest 子类的属性改回 NSNumber,然后按如下方式更改纬度和经度的分配:
newPOI.latitude = [NSNumber numberWithDouble:self.item.placemark.location.coordinate.latitude];
newPOI.longitude = [NSNumber numberWithDouble:self.item.placemark.location.coordinate.longitude];
那么当你想使用纬度时:
self.item.placemark.location.coordinate.latitude = [newPOI.latitude doubleValue];
等等
我在存储 MKMapItem
时遇到了一个问题,我可以通过查看编译器警告来解决这个问题,但我不明白 为什么 我是能够解决它或者如果我使用 "best practices".
我有一个 Object 模型,该模型将 MKMapItem
中的纬度和经度坐标分别存储为 NSManagedObject
中的 double
s。当我转到 Editor\Create NSManagedObject Subclass
并创建我的 class 时,header 看起来像这样:
@class LocationCategory;
@interface PointOfInterest : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * address;
// Xcode spat out NSNumber instead of the double specified in the model setup screen
@property (nonatomic, retain) NSNumber * latitude;
@property (nonatomic, retain) NSNumber * longitude;
@property (nonatomic, retain) NSString * note;
@property (nonatomic, retain) LocationCategory *locationCategory;
@end
一切都很好,直到我尝试将 object 添加到我的 managedObjectContext
我收到了这些警告:
Assigning to 'NSNumber *' from incompatible type 'CLLocationDegrees' (aka 'double')
这些行:
newPOI.latitude = self.item.placemark.location.coordinate.latitude;
newPOI.longitude = self.item.placemark.location.coordinate.longitude;
我通过更改 PointOfInterest : NSManagedObject
subclass:
@property (nonatomic) double latitude;
@property (nonatomic) double longitude;
这是让编译器满意的最好方法还是有更好的方法?
我建议您将 PointOfInterest 子类的属性改回 NSNumber,然后按如下方式更改纬度和经度的分配:
newPOI.latitude = [NSNumber numberWithDouble:self.item.placemark.location.coordinate.latitude];
newPOI.longitude = [NSNumber numberWithDouble:self.item.placemark.location.coordinate.longitude];
那么当你想使用纬度时:
self.item.placemark.location.coordinate.latitude = [newPOI.latitude doubleValue];
等等