我目前正在设计一个基于CloudKit
的同步解决方案,我想知道保持云项(CKRecord
个对象的列表(在我的情况下是一个数组)的顺序是什么最好的方法)一致。
Apple建议不要保留对子对象的引用,而只是引用来自子对象的CKReference
父对象。如果您想根据其中一个属性(例如创建日期)查询您的项目,但是如果您的订单由用户确定,则无法正常工作。
我提出了两种基于相同想法的不同方法:维护标识符清单以管理项目的位置。
1)同步一个额外的记录(aka manifest),它有一个标识符数组,每个标识符都标识一个CKRecord
对象(和相应的本地模型对象)。
2)创建一个父对象,该对象包含一个引用数组(CKReference
对象)到它的子对象。此数组维护给定的顺序。
我觉得这不是解决这个问题的最好办法,我很高兴听到你的想法。
答案 0 :(得分:8)
Apple建议不要持有对子对象的引用,但这并不意味着你不能只在你的对象中包含一个带有记录Id的数组。这些不必是CKReference对象。你可以保存一个字符串值数组。
我认为你是对的,这将是维持排序顺序的最佳/最简单的方法。
另一种解决方案是创建链接列表。然后每条记录都需要引用下一条记录。更改订单时,您只需更改3条记录。 1指向记录的记录,指向记录的新记录和记录本身。