gpt4 book ai didi

objective-c - 如何获取保存到 Core Data 托管对象上下文的对象的 ID?

转载 作者:太空狗 更新时间:2023-10-30 03:48:28 32 4
gpt4 key购买 nike

我有这个代码:

NSEntityDescription *userEntity = [[[engine managedObjectModel] entitiesByName] objectForKey:@"User"];
User *user = [[User alloc] initWithEntity:userEntity insertIntoManagedObjectContext:[engine managedObjectContext]];

我想知道插入到托管对象上下文中的对象的 ID。我怎样才能得到它?

该 id 是否会在该对象的生命周期内保持不变,或者它是否会持久保存到其下的 sqlLite 数据库中,并成为可用于在获取操作期间唯一标识它的东西(我的最终目标)。

感谢任何帮助//:)

最佳答案

如果您想永久保存对象的 ID,您需要:

  1. 将对象保存到上下文中,以便 ID 从临时 ID 变为永久 ID。
  2. 使用 -[NSManagedObjectID URIRepresentation] 提取永久 ID 的 URI 版本.这会返回一个 NSURL,您可以将其作为可转换属性存储在另一个托管对象中。
  3. 您可以使用-[NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:] 获取对象生成一个新的 NSManagedObjectID对象,然后使用 -[NSManagedObjectContext objectWithID:]获取实际引用的托管对象。

URI 应该标识特定计算机上特定商店中的特定对象,但如果您对商店进行任何结构更改(例如将其迁移到新模型版本),它可能会发生变化。

但是,您可能不需要执行任何这些操作。与在其他数据模型系统中相比,ObjectID 在 Core Data 中扮演的角色要小得多。 Core Data 维护一个对象图,该图通过对象在图中的位置唯一标识对象。只需遍历图形关系即可将您带到特定的唯一对象。

您真正需要 ObjectID 的唯一时间是当您跨两个或多个持久存储访问对象时。你需要它们,因为关系不会跨商店。

关于objective-c - 如何获取保存到 Core Data 托管对象上下文的对象的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3251673/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com