使用CloudKit保持NSArray的顺序

时间:2015-02-27 04:09:25

标签: ios objective-c macos cocoa cloudkit

我目前正在设计一个基于CloudKit的同步解决方案,我想知道保持云项(CKRecord个对象的列表(在我的情况下是一个数组)的顺序是什么最好的方法)一致。

Apple建议不要保留对子对象的引用,而只是引用来自子对象的CKReference父对象。如果您想根据其中一个属性(例如创建日期)查询您的项目,但是如果您的订单由用户确定,则无法正常工作。

我提出了两种基于相同想法的不同方法:维护标识符清单以管理项目的位置。

1)同步一个额外的记录(aka manifest),它有一个标识符数组,每个标识符都标识一个CKRecord对象(和相应的本地模型对象)。

2)创建一个父对象,该对象包含一个引用数组(CKReference对象)到它的子对象。此数组维护给定的顺序。

我觉得这不是解决这个问题的最好办法,我很高兴听到你的想法。

1 个答案:

答案 0 :(得分:8)

Apple建议不要持有对子对象的引用,但这并不意味着你不能只在你的对象中包含一个带有记录Id的数组。这些不必是CKReference对象。你可以保存一个字符串值数组。

我认为你是对的,这将是维持排序顺序的最佳/最简单的方法。

另一种解决方案是创建链接列表。然后每条记录都需要引用下一条记录。更改订单时,您只需更改3条记录。 1指向记录的记录,指向记录的新记录和记录本身。