teilen Ich versuche, Cloud-Kit-Sharing in meiner Anwendung zu implementieren, aber wenn ich versuche, einen Artikel zu teilen sich ein UICloudSharingController
mit Ich bin eine konsistente Fehler bekommen:Kann nicht Wolkenjunge CKShare Rekord
ich mit dem präsentierten bin ursprüngliche Quote popover Menschen für das Hinzufügen, und dann, wenn ich eine der Optionen wählen, wie ich mag würde die Einladung senden (dh: per Post), die UICloudSharingControllerDelegate
kehrt Aufruf:
func cloudSharingController(_ csc: UICloudSharingController, failedToSaveShareWithError error: Error)
und werfe den Fehler:
CKError 0x170245d60: "Ungültige Argumente" (12); "Ein weiterer Anteil wird ohne seine rootRecord (CKRecordID: 0x1700343e0; record = C9FA0E96-3461-4C9E-AB99-3B342A37A07A, ZoneID = PrivateDatabase: __ defaultOwner_) gespeichert"
Ich habe bereits eine eigene Zone im privaten erstellt Cloud-Datenbank für den Benutzer, dessen zoneId "PrivateDatabase" ist. Ich habe ein Objekt erstellt und erfolgreich in iCloud gespeichert. Es ist mit der benutzerdefinierten Zone verknüpft, die ich zuvor erstellt habe. Der Code, den ich die UICloudSharingController präsentieren bin mit ist wie folgt:
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)
Was soll ich hier fehlt?
überprüft nur die WWDC2016, das ist, was bedeutete, dass ich : "..Sie müssen immer eine Freigabe mit einem Stammdatensatz erstellen, so dass immer etwas in der Freigabe ist. Als nächstes werden wir diese Freigabe und den Stammdatensatz gleichzeitig auf dem Server speichern. Sie Ich möchte das tun, weil es eine neue Eigenschaft in CKRecord gibt, die eine Referenz auf die von uns erstellte Freigabe darstellt. Durch gleichzeitiges Speichern des Stammdatensatzes und der Freigabe wird diese Referenz auf die Freigabe gesetzt, die Sie gerade verwenden erstellt ...... " – Red
Ich habe überprüft, und ich habe die Freigabe mit dem RootRecord erstellt, die mir von CloudKit bereitgestellt wurde. Dieses Problem besteht weiterhin. –