gpt4 book ai didi

ios - 无法共享 CloudKit CKShare 记录

转载 作者:行者123 更新时间:2023-11-30 12:41:51 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中实现云套件共享,但是,每当我尝试使用 UICloudSharingController 共享项目时,我都会收到一致的错误:

我会看到用于添加人员的初始共享弹出窗口,然后当我选择发送邀请的选项之一(即:通过邮件)时,UICloudSharingControllerDelegate返回调用:

func cloudSharingController(_ csc: UICloudSharingController, failedToSaveShareWithError error: Error)

并抛出错误:

CKError 0x170245d60:“无效参数”(12); “正在保存添加的共享,但没有其根记录(CKRecordID:0x1700343e0;recordName=C9FA0E96-3461-4C9E-AB99-3B342A37A07A,zoneID=PrivateDatabase:__defaultOwner_)”

我已在私有(private)云数据库中为 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)

我在这里缺少什么?

最佳答案

您对 UICloudSharingController 的实例使用了错误的初始值设定项。对于两种不同的用例,有两种不同的初始化程序

  • 如果第一次共享某个项目(尚未共享),您必须使用 rootRecord 创建一个新的 CKShare 实例(就像您在代码中所做的那样),但随后您必须使用此初始化程序来初始化 UICloudSharingController init(preparationHandler:)
  • 如果某个项目已处于共享进程中,则您必须从 iCloud 获取现有共享并使用此初始化程序 init(share:container:) 初始化您的 UICloudSharingController

因此,您的情况的错误是,您创建了 CKShare 的新实例,但随后使用了错误的初始值设定项。

more from Apple

关于ios - 无法共享 CloudKit CKShare 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42148151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com