如何使用 CloudKit 将条目从公共数据库保存到私有数据库

Posted

技术标签:

【中文标题】如何使用 CloudKit 将条目从公共数据库保存到私有数据库【英文标题】:How to save an entry from public to private database using CloudKit 【发布时间】:2021-11-28 16:42:29 【问题描述】:

使用 CloudKit 将条目从公共数据库保存到私有数据库的最明智的方法是什么

回答了一个类似的问题:here,但我不太明白那些话的解决方案。我不一定需要代码答案(尽管总是很感激),但链接的问题在这里让我感到困惑:

然后,该 recordType 将有一个 CKReference 类型的字段,您可以在其中保存您的用户 ID

这是否意味着公共条目具有对所有保存它的用户的引用数组?

目前我只是根据他们选择保存的公共数据库在用户私人数据库中创建一个全新的条目。当我获取公共项目时,我首先查询保存的项目并交叉引用,这样我就可以例如将“星”按钮设置为已填充或未填充。感觉非常冗长和错误,我想知道人们是如何管理这个的。

示例:

具有两个选项卡/视图的应用 - “公共”和“私人”。公共视图是字符串列表(来自公共数据库)和一个星形图标,显示用户是否保存它,私有视图显示已保存的条目。

谢谢

【问题讨论】:

【参考方案1】:

是的,这就是他们的解决方案。如果您想保留自己的,只需在您的私人数据库中创建记录的副本。在我的代码中,我为每种记录类型创建模型;

let publicDB: CKDatabase
let privateDB: CKDatabase
var saveToDB : CKDatabase

那么;

... other code retrieved record R from public DB

现在;

saveToDB = privateDB

saveToDB.save(R, completionHandler:
 
    (record, error) -> Void in
    if (error != nil)
    
                       // ... error handling...
                       completion(error)
   
   else
   
       completion(nil)
                   
                       
    
)

【讨论】:

以上是关于如何使用 CloudKit 将条目从公共数据库保存到私有数据库的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit 数据管理

从模拟器查询公共数据库时出现 Cloudkit 错误

如何查看保存在 CloudKit Dashboard 中的值?

来自 iCloud/CloudKit 的序列号

CloudKit公共数据库删除记录

Swift - 从 Cloudkit 公共数据库中获取所有记录