У меня есть приложение, в котором я могу делиться записями с другими пользователями, все работает, когда я делюсь одной записью, моя проблема заключается в том, что когда я делюсь записью (родительской записью), которая имеет дочерние записи, ссылающиеся на нее, я вижу родительскую запись в Shared Database
на панели управления CloudKit после того, как пользователь принимает общий ресурс, но я не вижу никаких связанных дочерних записей.
На основе видеороликов WWD C и некоторых других потоков здесь, в 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
.