2017-02-09 1 views
0

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?

Antwort

0

haben Sie in iCloud zu überprüfen, ob der Anteil der korrekten Link zu den Wurzeldatensatz in der richtigen Zone usw. hat, und/oder die rootRecord existiert ...

+0

ü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

+0

Ich habe überprüft, und ich habe die Freigabe mit dem RootRecord erstellt, die mir von CloudKit bereitgestellt wurde. Dieses Problem besteht weiterhin. –