objective-c - 将 NSManagedObjectID 保存在 CoreData 中

标签 objective-c core-data nsmanagedobject

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

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

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

谢谢

最佳答案

NSManagedObjectID 本身不符合编码标准。但是您可以获得对象 ID 的 URL 表示形式并存储它。像这样:

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

然后为了获取对象 ID 以检索它稍后引用的任务对象(psc 是您的 NSPersistentStoreCoordinator 其中 Task 实体存在):

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

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

关于objective-c - 将 NSManagedObjectID 保存在 CoreData 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881677/

相关文章:

iphone - 如何调整 cell.textLabel 的大小?

ios - 如何通过键号访问 NSDictionary?

ios - CoreData Fetch Request 将 [Any] 转换为 [AnyObject] 会产生内存泄漏

objective-c - 核心数据嵌套托管对象上下文和频繁的死锁/卡住

objective-c - CoreData 无法完成错误

cocoa - 在核心数据中,一个MOC中是否只有一个托管对象?

objective-c - 核心数据中的新子对象创建“幽灵”父对象?

ios - cellForItemAtIndexPath , sizeForItemAtIndexPath , insetForSectionAtIndex 没有被调用 iOS

objective-c - 优化view绘制代码

ios - Swift Core数据无法第二次存储数据: Cocoa error 1560