我在存储MKMapItem
时遇到了一个问题,我可以通过查看编译器警告来解决,但我不明白为什么我能够解决它,或者我是否使用了"最佳实践"。
我有一个对象模型,它将MKMapItem
的纬度和经度坐标分别存储为NSManagedObject
中的double
s。当我转到EditorCreate NSManagedObject Subclass
并创建 my 类时,标题如下所示:
@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
一切都很好,直到我尝试将对象添加到我的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
子类来修复它:
@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];
等。