使用 CloudKit 时 SwiftData 模型的独特属性

ben*_*art 5 cloudkit swift-data

不幸的是,使用 CloudKit 时,该.unique属性不可用于 SwiftData 模型属性。是否有最佳实践为我自己的模型设置这样的约束?

对于本地数据库,在创建和插入新模型之前获取(和过滤)模型是相当简单的。

但是如何防止来自其他设备的模型重复 - 即,在从 CloudKit 导入时将重复的模型与本地现有的模型合并,然后将它们插入到本地 SwiftData DB 中?

Sha*_*ToD 0

不幸的是,在 CloudKit 中拥有独特的属性是不可能的。根据苹果的文档:

@Attribute - The framework synchronizes changes concurrently and at opportune times, which means CloudKit is unable to enforce the unique property option.
Run Code Online (Sandbox Code Playgroud)

我建议手动删除每个设备上的重复项。您可以通过创建后台任务调度程序来处理它,该调度程序将负责从数据库中删除实体。这不是完美的解决方案,但它应该有效。无论如何,您将不得不处理 UI 与重复项之间的冲突。这仅取决于您如何解决它。例如:显示最新数据,或显示错误...等