在核心数据中存储 CLLocationCoordinates



我在存储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];

等。

相关内容

  • 没有找到相关文章

最新更新