я столкнулся проблемы при сохранении MKMapItem
, что я был в состоянии решить, глядя на предупреждения компилятора, но я не понимаю, почему я был в состоянии решить, или, если я использовал " лучшие практики".Сохранение CLLocationCoordinates в Core Data
У меня есть объектная модель, которая хранит координаты широты и долготы от MKMapItem
отдельно как double
s в NSManagedObject
. Когда я иду в Editor\Create NSManagedObject Subclass
и создать свой класс, заголовок выглядит следующим образом:
@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;
Это лучший способ сделать компилятор счастливым или есть лучший способ?
Ваше решение является вполне разумным и действительным. На самом деле, нет необходимости менять его или беспокоиться о том, что вы делаете что-то неправильно, это хорошее решение как есть. –