iCloud 记录的修改顺序

The order in which iCloud records are modified

我现在正在使用 CKModifyRecordsOperation 将 5 条记录添加到 iCloud。我的代码是这样的:

let recordsToSave: [CKRecord] = [record1, record2, record3, record4, record5]
let operation = CKModifyRecordsOperation(recordsToSave: recordsToSave, recordIDsToDelete: [])

成功修改5条记录后,我使用CKQueryOperation查询所有记录,我的代码是这样的:

let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: RECORDTYPE, predicate: predicate)
query.sortDescriptors = [NSSortDescriptor(key: "modificationDate", ascending: true)]
let operation = CKQueryOperation(query: query)

我以为获取记录的顺序是 记录1-记录2-记录3-记录4-记录5.

但是,其实顺序是乱的。它可能是 1-3-5-4-2,也可能是 2-4-5-1-3,或任何其他。这取决于 iCloud 本身。但是我在iCloud Dashboard中查看了这5条记录,这5条记录的修改日期是一样的。

有什么办法可以实现我想要的顺序吗?

当数据库按特定 属性 排序时,出于性能原因,它们通常会 return 具有与 属性 相同值的记录以任意顺序排列。如果您需要为这些记录保留该顺序,您可以执行以下两项操作之一:

  • 添加您在该修改操作中为每条记录设置的辅助 ID 属性,并在该 属性 上添加第二个 NSSortDescriptor。 (在您的示例中,您可以将此 属性 的值设置为 record1 为 1,record2 为 2,依此类推)
  • 一次修改一条记录,以便它们获得唯一的修改时间。

不知道关于您的应用程序的更多具体细节,我会倾向于辅助 ID 解决方案。如果你不想让你的数据库变得更复杂,并且你的应用程序不会一次修改大量记录,后一种解决方案可能更合适。