2015-05-03 35 views
0

IOS newb构建一个应用程序与网站一起工作。最终,我想保持应用程序和后台在网站上同步。ios/xcode/core-data:存储和检索唯一标识符

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

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

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

如何在创建该项目的时候在核心数据数据库中获取并存储该号码以供日后检索?

或者有人发现了一种方法来在核心数据中自动递增,以给出可用于存储照片的项目编号。对于由应用程序创建的照片以及通过网站创建的照片,应该有相似的命名方案。

+0

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

回答

4

没有用于在Core Data中创建自动递增ID的“内置”解决方案。 您应该认识到的一件重要事情是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对象的属性。

+0

我喜欢这个想法。然而,除了新项目的id之外,我还在项目的图片名称,与项目相关的文件等内容中使用了id。我想我必须为这些图片创建一些临时名称直到他们可以使用与服务器的命名方案一致的服务删除来重命名。 – user1904273