2017-02-09 4 views
0

Я пытаюсь осуществить совместное использование набора облака в моем приложении, однако, всякий раз, когда я пытаюсь делить элемент с помощью 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) 

Что я здесь отсутствует?

ответ

0

сделал вы проверяете в ICloud, есть ли доля правильной ссылка на корневой запись в нужной зоне и т.д., и/или rootRecord в существующем ...

+0

просто проверило WWDC2016, вот что я имел в виду : «Всегда нужно создать общий ресурс с корневой записью, поэтому в общем случае всегда есть что-то. Далее мы собираемся сохранить этот Share и корневую запись на сервер в одно и то же время. Вы вы хотите сделать это, потому что в CKRecord есть новое свойство, которое является ссылкой на созданный нами общий ресурс. Сохраняя запись root и Share в то же время, эта ссылка будет установлена ​​на общий ресурс, который вы просто created ...... " – Red

+0

Я проверил и создал ресурс с rootRecord, который был предоставлен мне из CloudKit. Этот вопрос по-прежнему сохраняется. –

Смежные вопросы