在CoreData中保存NSManagedObjectID

时间:2011-07-30 07:05:26

标签: objective-c core-data nsmanagedobject

我有一个xcdatamodel,其中包含一组在静态库中构建的实体。

我在项目中包含了这个静态库。我想在主项目中创建另一个模型,实体名为Task。我想在实体中有一个属性,我可以在其中存储在静态库中创建的实体的NSManagedObjectID。使用NSManagedObjectID,我可以轻松获取主存储并获取实体。 最后,可能有许多任务实体引用objectID。

有可能吗?我也明白这听起来像是一个关系模型,核心数据不是,所以有更好的解决方案来处理这个主题吗?

感谢

2 个答案:

答案 0 :(得分:9)

NSManagedObjectID本身不符合编码规范。但是您可以获取对象ID的URL表示并存储它。像这样:

myObject.externalTaskURL = [[task objectID] URIRepresentation];

然后,为了获取对象ID以检索任务对象,它稍后引用pscNSPersistentStoreCoordinator实体所在的Task

NSManagedObjectID* taskID = 
        [psc managedObjectIDForURIRepresentation:myObject.externalTaskURL];

确保从不对临时托管对象ID执行此操作。

答案 1 :(得分:0)

您可以将托管对象ID作为NSURL存储在可转换属性中。