ios - 使用 CloudKit 保持 NSArray 的顺序

标签 ios objective-c macos cocoa cloudkit

我目前正在设计一个基于 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/

相关文章:

macos - applescript 不从终端运行

ios - 在 Objective-C 中使用全局变量

ios - 在Xcode中运行应用程序时,如何通过mac传输屏幕和控制设备?

ios - 在获取其值之前解析调用 fetch

iphone - 检测点击字符。 UITextView characterRangeAtPoint 总是返回 nil

c++ - 如何 "usb to tty"?

ios - 随着 Zxing 为 iOS 退休,应该改用哪个条码扫描器?

iphone - 检测标签栏选择的 View Controller

ios - Uitableview Cell Animation like Secret App

macos - Mac OS X : YASM: error: macho: sorry, 无法在 64 模式下应用 32 位绝对重定位