盲目地将值附加到 CloudKit 记录

Blindly append value to CloudKit record

今天我开始研究 CloudKit,我想知道是否有办法将值附加到标记为列表的字段。

我现在的做法是:

  1. 我查询记录,得到当前值列表。
  2. 我在本地给记录加了一个值
  3. 我使用setValue(_: forKey:)的方法,用我在2中创建的新值完全覆盖了旧值。
  4. 我更新记录再保存

我想知道是否有办法 "blindly" 将新值附加到列表字段,而不必先读取当前值再附加新值对客户端的价值。

谢谢。

如果您需要能够在不首先获取现有记录的情况下追加记录,您可以考虑使用不同的记录类型和 CKReference

例如,假设您当前的记录类型是 Company,它有一个字段 employees,类型是 String (List)。您希望在不知道列表中还有谁的情况下向该列表添加更多员工。

您可以使用 name 类型 String 字段和 company 类型 [=10] 字段创建 Employees 记录类型=].然后,您可以随心所欲地创建员工并设置他们的 company 参考,他们将与他们的公司相关联。

您不必知道公司还雇用了谁,但您仍然可以查询 CloudKit 与特定公司关联的所有员工。

综上所述,首先获取您正在修改的记录、将值列表保存到数组、追加新值并将数组保存回 CKRecord 应该非常容易。 :) 祝你好运!