iphone - 数据库中行的 Core Data 主键 ID

标签 iphone xcode core-data nspredicate nsmanagedobject

假设我有一个存储在核心数据中的书籍列表。我想通过主键 ID 搜索一本书。

我知道 Core Data 创建的 sqlite 文件在每个表中都有一个 ID 列,但这似乎并没有以任何方式暴露给我。

有人有什么建议吗?

最佳答案

-[NSManagedObject objectID] 是 Core Data 中对象实例的唯一 ID。它可以通过 -[NSManagedObjectID URIRepresentation] 进行序列化。您可以使用 -[NSPersistentStoreCoordinator ManagedObjectIDForURIRepresentation:] 从持久存储协调器检索 objectID,然后使用 -[NSManagedObjectContext objectWithID:] 从托管对象上下文获取对象: ]

但是

您应该记住,核心数据不是 ORM。这是一个object graph management framework 。也就是说,使用 SQLite(和唯一行 ID)作为后端纯粹是一个实现细节。您越早摆脱 SQL/RDBMS 思维模式,您就会越快对 Core Data 感到满意。不要尝试从存储的 ID 中查找对象,而是考虑为什么需要该对象以及什么对象需要它。如果 Foo 类的实例需要能够访问 Bar 类的实例,为什么不直接创建一个从 FooBar 并将相应的 Bar 实例设置为相应 Foo 实例上关联的目标。让 Core Data 跟踪对象 ID。

关于iphone - 数据库中行的 Core Data 主键 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4720182/

相关文章:

ios - 核心数据确保数据唯一性

ios - 如何在 swift 中使用 fetchedresultscontroller 重新排序 tableview 行?

iphone - 如何使用 AWS iOS SDK 从 S3 保存文件?

iphone - iPhone 上的额外右边距

iphone - UINavigationBar背景图片不随旋转改变

ios - 为什么 NULL 需要用 block 进行类型转换?

iphone - 在 iPhone 应用程序内运行终端命令

ios - 选择 UIPickerView 选择的 UITableView 中的对象

ios - 如何在 build.json 中指定 Cordova 构建目标

swift - 展开 UIImage 时发生 fatal error (数据 : data) in Xcode