• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

icloud sync ohne internet

SpecialFighter

James Grieve
Registriert
25.04.12
Beiträge
132
Hallo zusammen,

ich rüste meine app mit icloud auf.

kurzes bespiel:
in meiner app kann man in einem tableview einen eintrag machen.
wenn der eintrag gespeichert wird, wird dieser im core data abgelegt.

zukünftig soll es so gehen:
iCloud aktiv ?
-> ja -> Einträge werden in iCloud gespeichern / davon abgerufen
-> nein -> Einträge werden in Core Data gespeichern / davon abgerufen

da dass Thema iCloud für mich aktuell neu ist, habe ich allerdings noch offene Fragen.
wenn icloud aktiv ist, überprüfe ich vor dem speichern, ob eine Internetverbindung besteht (Code dafür existiert bereits)
- was mache ich denn, wenn keine Verbindung existiert. wo soll der Datensatz dann gespeichert werden?
- wann und wie soll ich diesen später am besten nachtragen lassen?

Die Daten sollen auch verfügbar sein, wenn keine Internetverbindung besteht.
- Wie soll ich die Daten anzeigen lassen, wenn diese aus der iCloud ohne Verbindnung nicht angezeigt werden können?

Meine App läuft unter ios 9 mit swift 2
Freue mich sehr auf eure Hilfe & Unterstüzung.
 
Hi,

welche iCloud-Anbindung nutzt du?

Bei iCloud Key-Value-Storage übernimmt das System für dich die Synchronisation. Wenn keine Internetverbindung besteht, cached das Gerät die Änderungen lokal und synchronisiert sich bei der nächsten Möglichkeit mit den iCloud-Servern.

Bei CloudKit bist du selbst für die Synchronisation verantwortlich. Eine CKModifyRecordsOperation liefert dir bei fehlender Internetverbindung den Fehler "NetworkUnavailable" und die Einträge zurück, die du speichern wolltest. In meiner App speichere ich die Daten dann lokal auf einer Warteschlange ab, die bei jedem Synchronisationsversuch abgearbeitet wird. Sobald eine Synchronisation geklappt hat, entferne ich den Eintrag wieder von der Warteschlange.

Generell solltest du deine (Nutzer-)Daten aber immer auch lokal speichern, da deine App sonst bei jeder Aktion mit dem Internet kommunizieren muss. Deinen lokalen Datenstand gleichst du dann mit den iCloud-Servern ab.

Gruß Felix
 
Vielleicht ist ja auch iCloud Drive was für dich. Das funktioniert auch offline und synced sobald wieder ne Verbindung besteht.

Mit freundlichen Grüßen
Steffen