Я пытаюсь осуществить совместное использование набора облака в моем приложении, однако, всякий раз, когда я пытаюсь делить элемент с помощью UICloudSharingController
я получаю последовательную ошибку:Не может поделиться CloudKit CKShare записи
Я преподношу начальная доля поповер для добавления людей, а затем, когда я выбираю один из вариантов того, как я хотел бы послать приглашение (т.е. по почте), то UICloudSharingControllerDelegate
возвращается призывающую:
func cloudSharingController(_ csc: UICloudSharingController, failedToSaveShareWithError error: Error)
и бросает ошибку:
CKError 0x170245d60: «Недопустимые аргументы» (12); "Дополнительная доля сохраняется без его rootRecord (CKRecordID: 0x1700343e0; RecordName = C9FA0E96-3461-4C9E-AB99-3B342A37A07A, ZoneId = PrivateDatabase: __ defaultOwner_)"
Я уже создал пользовательскую зону в частном облачную базу данных для пользователя, zoneId которого является «PrivateDatabase». Я создал объект и успешно сохранил его в iCloud, и он связан с пользовательской зоной, которую я ранее создал. Код, я использую, чтобы представить UICloudSharingController выглядит следующим образом:
let object = // A core data representation of a CKRecord //
let share = CKShare(rootRecord: object.record) //record is a CKRecord that is stored with the core data object
share[CKShareTitleKey] = object.name as? CKRecordValue
share[CKShareThumbnailImageDataKey] = UIImagePNGRepresentation(object.categoryKey.icon()) as? CKRecordValue
share[CKShareTypeKey] = "reverse.domain" as CKRecordValue
share.publicPermission = .readOnly
let sharingController = UICloudSharingController(share: share, container: self.container)
sharingController.delegate = self
sharingController.availablePermissions = [.allowPrivate, .allowReadOnly]
sharingController.popoverPresentationController?.sourceView = sourceView
controller.present(sharingController, animated: true, completion: nil)
Что я здесь отсутствует?
просто проверило WWDC2016, вот что я имел в виду : «Всегда нужно создать общий ресурс с корневой записью, поэтому в общем случае всегда есть что-то. Далее мы собираемся сохранить этот Share и корневую запись на сервер в одно и то же время. Вы вы хотите сделать это, потому что в CKRecord есть новое свойство, которое является ссылкой на созданный нами общий ресурс. Сохраняя запись root и Share в то же время, эта ссылка будет установлена на общий ресурс, который вы просто created ...... " – Red
Я проверил и создал ресурс с rootRecord, который был предоставлен мне из CloudKit. Этот вопрос по-прежнему сохраняется. –