我有一个带有地标数据属性的核心数据实体,我正在尝试存储CLPlacemark对象。
@interface ZJPlace : NSManagedObject
...
@property (nonatomic, retain) NSData * placemark;
我正在编码这样的对象:
place.placemark = [NSKeyedArchiver archivedDataWithRootObject:self.placemark];
并像这样解码:
self.placemark = [NSKeyedUnarchiver unarchiveObjectWithData:place.placemark];
在解码时,我没有收到错误或没有回来 - 它看起来像一个空的CLPlacemark对象(self.placemark
的类是CLPlaceMark
但description
不打印什么东西到日志。)
我可以看到保存在place.placemark
核心数据属性中的数据,但它没有被解码回适当的对象。它与这个问题基本上是同一个问题:Trouble decoding with NSKeyedUnarchiver没有得到答复。
关于如何一起使用NSKeyedArchiver和CoreData,我是否缺少一些基本的东西?提前感谢任何提示...
答案 0 :(得分:1)
Durrr ...当然是基本的东西我完全忘记了Core Data如何存储复杂的对象。希望这能帮助那些像我一样无能为力的其他新手。叹。
所以这里是我上面关于在核心数据中编码CLPlacemark的问题的简单解决方案:
Transformable
NSManagedObject's
属性的类型从NSData更改为您尝试编码的任何类,在我的情况下CLPlacemark
然后就像使用普通对象一样使用属性,例如
self.placemark = place.placemark
不需要NSKeyedArchiver
来解决问题。