【问题标题】:Store and retrieve unique identifier from Core Data从 Core Data 存储和检索唯一标识符
【发布时间】:2015-07-12 22:51:55
【问题描述】:

iOS 新手正在构建一个与网站一起使用的应用程序。最终,我希望网站上的应用和后端保持同步。

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

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

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

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

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

【问题讨论】:

  • 您可以为照片创建一个唯一的名称并保存。使用类似:设备 ID、日期、设备平台等。

标签: ios core-data auto-increment uniqueidentifier


【解决方案1】:

没有用于在 Core Data 中创建自动递增 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 对象的属性。

【讨论】:

  • 我喜欢这个主意。但是,除了新项目本身的 id 之外,我还会在项目的图片名称、与项目关联的文件等内容中使用 id。我想我必须为图片修改一些临时名称直到他们可以使用与服务器命名方案一致的 serve rid 重命名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2016-10-09
  • 2013-10-07
  • 2011-09-23
  • 2013-03-10
  • 2010-11-01
相关资源
最近更新 更多