ios - 在 CloudKit 中共享父记录时,子记录未显示在共享数据库中
问题描述
我有一个应用程序,我可以与其他用户共享记录,当我共享一条记录时一切正常,我的问题是当我共享一条有子记录引用它的记录(父记录)时,我可以在Shared Database
in 中看到父记录用户接受共享后的 CloudKit 仪表板,但我没有看到任何相关的子记录。
根据 WWDC 视频和 Stack Overflow 上的其他一些线程,当您共享父记录时,子记录会自动共享,但这不是我所看到的,再次,我可以在Shared Database
但没有子记录中看到父记录.
以下是如何在CloudKit Dashboard
.
在 CloudKit 仪表板中,我有一个Lists
和一个Items
记录类型,其中Lists
记录是一个或多个的父级Items
。在Items
模式中,我有一个Reference
字段类型,它保留对其父列表的引用。
这是我用来保存父记录的代码。
func shareList(){
let share = CKShare(rootRecord: self.list)
if let listName = self.list.object(forKey: "name") as? String {
self.listName = self.list.object(forKey: "name") as? String
share[CKShare.SystemFieldKey.title] = "Sharing \(listName)" as CKRecordValue?
} else {
share[CKShare.SystemFieldKey.title] = "" as CKRecordValue?
}
share[CKShare.SystemFieldKey.shareType] = "com.mySite.lists" as CKRecordValue
let sharingViewController = UICloudSharingController(preparationHandler: {(UICloudSharingController, handler: @escaping (CKShare?, CKContainer?, Error?) -> Void) in
let modRecordsList = CKModifyRecordsOperation(recordsToSave: [self.list, share], recordIDsToDelete: nil)
modRecordsList.modifyRecordsCompletionBlock = {
(record, recordID, error) in
handler(share, CKContainer.default(), error)
}
CKContainer.default().privateCloudDatabase.add(modRecordsList)
})
sharingViewController.delegate = self
sharingViewController.availablePermissions = [.allowPrivate]
self.navigationController?.present(sharingViewController, animated:true, completion:nil)
}
我错过了什么?共享父记录时我需要做任何额外的设置吗?
我说得对,子记录应该自动与父记录单独共享?
这是一张图片,展示了项目和列表之间的关系在Private Database
.
解决方案
您必须使用以下方法在每个子记录上设置父级setParent
:https ://developer.apple.com/documentation/cloudkit/ckrecord/1690507-setparent
像这样:
childRecord.setParent(parentRecord)
我希望这会有所帮助。
推荐阅读
- java - JPA 未正确更新 SQL 数据库
- internationalization - Flutter 国际化 - 动态字符串
- css - 如何使页脚停留在滚动的末尾
- database - heroku run rails db:migrate 运行 rails
- symfony - Symfony 控制器中服务的 Getter 方法
- azure - Azure 查询分析平均列中的所有值
- java - 类型交集:在相交类型中使用类型变量
- c# - 将映射文件复制到名为 Test_Performance_WithFilledExcelFile C# 的其他文件夹
- jhipster - 微服务的 JHipster-Registry Swagger UI 说 invalid_token
- c# - C# 通用接口设计与性能