我目前正在设计一个基于 CloudKit
的同步解决方案,我想知道最好的方法是保持云项目列表(在我的例子中是一个数组)的顺序( CKRecord
对象)一致。
Apple 建议不要持有对子对象的引用,而是仅使用来自子对象的 CKReference
来引用父对象。如果您想根据其中一项属性(例如创建日期)查询您的项目,这会很好地工作,但如果您有一个由用户确定的订单,则不行。
基于相同的想法,我提出了两种不同的方法:维护标识符 list 以管理项目的位置。
1) 同步一个额外的记录(又名 list ),它有一个标识符数组,每个标识符标识一个 CKRecord
对象(和相应的本地模型对象)。
2) 创建一个父对象,其中包含对其子对象的引用数组(CKReference
对象)。该数组维护给定的顺序。
我觉得这不是解决这个问题的最佳方案,我很乐意听听您的想法。
最佳答案
Apple 建议不要保留对子对象的引用,但这并不意味着您不能只在对象中包含一个带有记录 ID 的数组。这些不必是 CKReference 对象。您可以只保存一个字符串值数组。
我认为您是对的,这是维护排序顺序的最佳/最简单方法。
另一种解决方案是创建链表。然后每条记录都需要对下一条记录的引用。更改订单时,只需更改3条记录即可。 1 确实指向您的记录的记录,将指向您的记录的新记录和记录本身。
关于ios - 使用 CloudKit 保持 NSArray 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757363/