从 Core Data 存储和检索唯一标识符

Store and retrieve unique identifier from Core Data

iOS newb 正在构建一个与网站一起使用的应用程序。最后,我想让网站上的应用程序和后端保持同步。

照片使用项目的 ID 保存在网站上。对于该应用程序,我还想保存带有链接到该项目的唯一编号的照片。

在网站上,每个项目的 id 只是 MYSQL table 中自动递增的数字。

我的理解是自动增量在 Core Data 中是不可能的,但它确实为每个托管对象创建了唯一标识符。

创建项目时如何获取此编号并将其存储在核心数据数据库中以供以后检索?

或者有没有人发现了一种在核心数据中自动递增的方法,以便提供可用于存储照片的项目编号。如果应用程序创建的照片和通过网站创建的照片具有类似的命名方案,那就太好了。

在 Core Data 中没有 'built in' 创建自动递增 id 的解决方案。 您应该认识到的一件重要事情是 Core Data 是一个对象图而不是关系数据库。这对于理解应该如何使用 Core Data 进行设计非常重要。

是的,Core Data 确实以 GUID 的形式为对象创建了唯一标识符——所以它不是数字,而是 32 个十六进制数字 (Globally unigue identifier)。

您可以编写一个方法来获取实体序列中的下一个数字,但 Core Data 不会为您做这件事。

您可能会发现此问题中的信息很有用:Set auto increment in Core data iOS。我会不会尝试使用 NSManagedObjectID。这个值可以改变。

我的建议 是允许 MySQL 数据库分配 id 并简单地将该 id 存储在核心数据对象中的数字 属性 中.对于源自应用程序的项目,将 id 属性 留空,直到它被发送到 MySQL 数据库进行持久化。然后,检索数据库分配给它的 Id 并将其设置为 Core Data 对象的 属性.