将 NSManagedObjectID 保存在 CoreData 中

发布于 2024-11-26 20:35:07 字数 292 浏览 0 评论 0原文

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

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

是否可以 ?我还知道这听起来像一个关系模型,而 Core Data 不是,那么有没有更好的解决方案来处理这个主题?

谢谢

I have an xcdatamodel with a set of entities built in a static library.

I am including this static library in a project. I would like to create another model in main project, with entity named Task. I would like to have an attribute in the entity where I could store the NSManagedObjectID of an entity created in static library. With NSManagedObjectID I could easily fetch the main store and get the entity.
In the end there could be many Task entities refer to an objectID.

Is it possible ? I also understand that this is sounds like a relational model, which Core Data isn't, so is there a better solution for dealing with the subject?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼眸里的那抹悲凉 2024-12-03 20:35:07

NSManagedObjectID 本身不符合编码。但您可以获取对象 ID 的 URL 表示形式并将其存储。像这样:

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

然后,为了获取对象 ID 以检索它稍后引用的任务对象(psc 是您的 NSPersistentStoreCoordinator,其中 Task< /code> 实体处于活动状态):

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

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

The NSManagedObjectID is in itself not coding compliant. But you can get the URL representation of an object ID and store that. Like this:

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

Then in order to get the object ID back to retrieve the task object it refers to later (psc is your NSPersistentStoreCoordinator where the Task entities live):

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

Make sure to never do this to a temporary managed object ID.

蛮可爱 2024-12-03 20:35:07

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

You can store a managed object ID as a NSURL in a transformable attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文