2012-04-11 4 views
2

Ich habe eine iCloud + Core Data-Einrichtung im Bibliotheks-Stil. Die App, an der ich gerade arbeite, enthält Benutzerdaten, die sich hinter einem Anmeldebildschirm befinden. Nachdem der Benutzer sich angemeldet hat, wird der Persistent Store Coordinator instanziiert und der iCloud Store wird hinzugefügt.Umgang mit iCloud Core Data-Fehlern

Hier ist mein Anwendungsfall und Problem:

1) die App verwenden zu können, zu iCloud werden Daten 2) Löschen Sie die App 3) Erstellen Sie zum Gerät wieder anmelden, um die App erwarten gespeicherten Transaktions Protokolle abgerufen werden und Daten im lokalen Speicher neu erstellen. 4) Wenn eine langsame Verbindung verwendet wird, erhalte ich Fehler im Debugprotokoll, die mehrfach angeben, dass der Dateidownload fehlgeschlagen ist ... 5) Die App ist leer und es scheint nun so, als ob die Wiederherstellung fehlgeschlagen wäre.

Meine Konfiguration ist in der Tat richtig und funktioniert 100% über eine Sinkverbindung.

Gibt es eine Möglichkeit, iCloud den sofortigen Download dieser Dateien zu erzwingen? Gibt es einen Rückruf, den ich verwenden kann, um sicherzustellen, dass diese Dateien erfolgreich heruntergeladen wurden, bevor Sie den Benutzer in die App zulassen?

Alle Ratschläge werden geschätzt! Vielen Dank.

Antwort

1

iCloud ist eine Technologie, die noch in den Kinderschuhen steckt, insbesondere die Integration mit Core Data.

Das Intervall, in dem iCloud beschließt, Inhalte an ein Gerät zu senden, ist nicht vorhersehbar, und zu diesem Zeitpunkt kann iCloud leider nicht die Daten abrufen. Irgendwo in den Apple Entwicklerforen heißt es, dass wenn iCloud-Inhalte nicht heruntergeladen werden können, es einfach später erneut versuchen wird.

Es gibt keinen Rückruf, den Sie jetzt verwenden können, Ihre App muss (wenn möglich) intelligent genug sein, um zu wissen, wann der richtige Inhalt heruntergeladen wurde. Abhängig davon, wie viel Inhalt Sie benötigen, können Sie Inventar erstellen, indem Sie sehen, welche Daten Sie aus der Benachrichtigung erhalten haben: NSPersistentStoreDidUpdateUbiquitousContentChangesNotification, falls vorhanden, und das userInfo-Wörterbuch auf die eingefügten (oder aktualisierten, gelöschten) Zeilen überprüfen.

Ich konnte eine ähnliche Sache in Apps tun, und wenn Ihre Situation auftritt Laden Sie den lokalen Speicher für den Benutzer und migrieren Sie den Speicher später auf den allgegenwärtigen.

Dies sind nur einige Vorschläge, Ihre Situation könnte sehr unterschiedlich sein. Hoffe das hilft zumindest irgendwie.