2017-02-09 136 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,那我是什麼意思:「..你總是需要創建一個帶有根記錄的共享,所以共享中總是有東西。」 接下來,我們將同時將該共享和根記錄保存到服務器。 您想要這樣做是因爲CKRecord上有一個新屬性,它是對我們創建的共享的引用 通過同時保存根記錄和共享,該引用將設置爲您剛纔的共享創建......「 – Red

+0

我已經檢查過,並且已經使用從CloudKit提供給我的rootRecord創建了共享。這個問題仍然存在。 –