我想實現我的應用程序的雲套件共享,但是,每當我嘗試使用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,那我是什麼意思:「..你總是需要創建一個帶有根記錄的共享,所以共享中總是有東西。」 接下來,我們將同時將該共享和根記錄保存到服務器。 您想要這樣做是因爲CKRecord上有一個新屬性,它是對我們創建的共享的引用 通過同時保存根記錄和共享,該引用將設置爲您剛纔的共享創建......「 – Red
我已經檢查過,並且已經使用從CloudKit提供給我的rootRecord創建了共享。這個問題仍然存在。 –