但是,每当我尝试使用UICloudSharingController共享一个项目时,我都会得到一个一致的错误:
我收到了用于添加人员的初始共享弹出,然后当我选择关于如何发送邀请(即通过邮件)的选项之一时,UICloudSharingControllerDelegate将返回呼叫:
func cloudSharingController(_ csc: UICloudSharingController, failedToSaveShareWithError error: Error)并抛出错误:
recordName=C9FA0E96-3461-4C9E-AB99-3B342A37A07A,zoneID=PrivateDatabase:__defaultOwner_)" CKError 0x170245d60:“无效参数”(12);“添加的共享在没有rootRecord的情况下保存(CKRecordID: 0x1700343e0;)
我已经在私有云数据库中为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)我在这里错过了什么?
发布于 2020-03-14 13:49:01
您对UICloudSharingController实例使用了错误的初始化器。有两个不同的初始化器用于,两个不同的用例。
init(preparationHandler:)初始化UICloudSharingController。init(share:container:)初始化您的UICloudSharingController因此,在您的情况下,错误是,您创建了一个新的CKShare实例,但是使用了错误的初始化程序。
发布于 2017-02-10 19:51:11
您是否在iCloud中签入,共享是否具有指向正确区域中的根记录的正确链接,以及/或rootRecord是否存在.
https://stackoverflow.com/questions/42148151
复制相似问题