【问题标题】:Save NSManagedObjectID in CoreData在 CoreData 中保存 NSManagedObjectID
【发布时间】:2011-07-30 07:05:26
【问题描述】:

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

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

有可能吗?我也明白这听起来像是一个关系模型,Core Data 不是,那么有没有更好的解决方案来处理这个主题?

谢谢

【问题讨论】:

    标签: objective-c core-data nsmanagedobject


    【解决方案1】:

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

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

    然后为了取回对象 ID 以检索它稍后引用的任务对象psc 是您的 NSPersistentStoreCoordinator Task 实体所在的位置)

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

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

    【讨论】:

    • 谢谢,这正是我想要的。我会去的。但是您知道是否有任何“CoreData”解决方案吗?
    • @Leonardo - 没有。每个应用程序应该只有一个持久存储协调器。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多