Ich arbeite an Xcode 8.3 mit iOS 10 und befolgte Apples Cloud Kit Quick Start Dokument für die Verwaltung eines lokalen Cache von Cloud-Daten, und mein Gerät konnte Push-Benachrichtigung erhalten wenn die Daten in einer privaten Datenbank Zone wurden geändert, aber bei dem Versuch, die Zonenänderungen zu holen ich die folgenden Fehler immer erhalten:CloudKit CKError "Ungültige Argumente" mit "Ungültige Synchronisationsfortsetzungsdaten"
2017-06-17 11:58:11.376807-0400 MyApp[10694:5029263] received remote notification
2017-06-17 11:58:11.897402-0400 MyApp[10694:5031532] fetch database change completed
2017-06-17 11:58:11.897606-0400 MyApp[10694:5031532] zone deletions
2017-06-17 11:58:12.320908-0400 MyApp[10694:5031561] record zone fetch completed
Error fetching zone changes for private database: <CKError 0x170256620: "Invalid Arguments" (12/2006); server message = "Bad sync continuation data"; uuid = xxxxxxxx-EFD7-459D-xxxx-xxxxxxxxxxx; container ID = "iCloud.com.mycompany.MyApp">
2017-06-17 11:58:12.332247-0400 MyApp[10694:5031561] fetch record zone changes completed
Error fetching zone changes for private database: <CKError 0x174640150: "Partial Failure" (2/1011); "Couldn't fetch some items when fetching changes"; uuid = xxxxxxxx-EFD7-459D-xxxx-xxxxxxxxxxx; container ID = "iCloud.com.mycompany.MyApp"; partial errors: {
PrivateZone:__defaultOwner__ = <CKError 0x170254670: "Invalid Arguments" (12/2006); server message = "Bad sync continuation data">
}>
Die „Bad Sync Fortsetzung Daten“ sind ziemlich verwirrend, da ich nicht eine Erklärung finden Dieser Fehler in Apples Dokument oder finden Sie einen Verweis in Google-Suche. Ist Ihnen das schon einmal begegnet?
Ich hatte das gleiche Problem. Verstehe ich Sie richtig, dass jede Datenbank (privat, geteilt, öffentlich) ihr eigenes Änderungstoken und jede Zone (Standard, ...) hat? Wenn ich diese Änderungen in dem Beispielcode von Apple angepasst habe, verschwinden die obigen Fehler, jedoch stürzt die Cloud-Deamon ab und ich bekomme diese Art von Fehlermeldungen: '[LogFacilityCK] Hat einen Verbindungsfehler für die Operation B6D7CD06813D5F2E: Fehler Domain = NSCOAErrorDomain Code = 4097" Verbindung zum Dienst namens com.apple.cloudd "UserInfo = {NSDebugDescription = Verbindung zum Dienst namens com.apple.cloudd}' Vielleicht könnten Sie Ihren angepassten Beispielcode teilen? – Daniel
Hallo, @Daniel, ja das ist, was ich von dieser Übung verstehe, dass jede Datenbank und Zone ihre eigenen Tokens hat. Ich sehe diese LogFacilityCK-Fehler nicht, wenn ich nurDatabaseChanges/fetchZoneChanges nach dem Empfang von durch serverseitige Änderungen erzeugten fernen Meldungen erhalte, aber ich habe herumgespielt und sehe diese Fehler, wenn ich proaktiv Änderungen abrufe, bevor ich Benachrichtigungen erhalte, sagen wir, wenn ich abholen will Änderungen am Start der App. Ist das auch in deinem Code passiert? Wenn dies der Fall ist, kann es sein, dass das Abrufen von Änderungen ohne neue Änderungen auf dem Server zu einem cloudKit-Seitenfehler führen kann. – CodePlumber
Um zu bestätigen, dass dieser Fehler durch das Abrufen ohne serverseitige Änderungen verursacht wird, habe ich versucht, meine App in den Hintergrund zu stellen, dann einige Änderungen auf der Serverseite vorzunehmen und dann die App zu aktivieren, die einen fetchChanges-Aufruf auslösen würde. In diesem Fall hat die App die Änderungen erfolgreich ohne Fehler abgerufen. Wenn Sie diese Übung erneut ausführen, ohne eine serverseitige Änderung vorzunehmen, wird der 4097-Fehler erneut angezeigt. – CodePlumber