我有一个具有placemark数据属性的核心数据实体,在其中我试图存储一个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核心数据属性中的数据,但是它没有被解码回一个适当的对象。它基本上和这个问题相同:用NSKeyedUnarchiver解码故障,它没有回答。
关于如何将NSKeyedArchiver和CoreData结合起来,我在这里缺少一些基本的东西吗?提前谢谢你的暗示..。
发布于 2013-07-29 21:34:47
杜尔..。当然,对于Core数据如何存储复杂的对象,我完全忘记了一些基本的东西。希望这能帮助那些和我一样无知的新手。叹一口气。
博士:可转换属性
因此,对于上面关于在核心数据中编码CLPlacemark的问题,这里有一个非常简单的解决方案:
TransformableNSManagedObject's属性的类型从NSData更改为您要编码的任何类,在我的示例中是CLPlacemark然后,只需像使用普通对象一样使用该属性。
self.placemark = place.placemark不需要与NSKeyedArchiver混在一起。
https://stackoverflow.com/questions/17903579
复制相似问题