Aktivität
Der folgende Befehl wird während der Arbeit mit iCloud mit Apps (wie Smultron 4 und TextEdit) ausgeführt, die Mobile Documents unterstützen:
sudo opensnoop -n ubd
- Zeigt lokale Dateien an, die vom Ubiquity-Daemon geöffnet wurden. Dateien enthalten Datenbanken, eine Datenbank pro Peer. Ein Verzeichnis pro Peer unter folgendem Pfad:
~/Library/Application Support/Ubiquity
Arten von Daten
Wenn Sie den Fortschritt messen möchten, entscheiden Sie, welche Typen gemessen werden sollen:
- Kerndatei
- Unterlagen
- Schlüsselwert.
Speichert, Fortschritt und Messung
Kerndatei
… Die Änderungsprotokolldateien, nicht die Speicherdatei, werden zu iCloud hochgeladen und auf die anderen Geräte eines Benutzers heruntergeladen. Wenn ein Änderungsprotokoll von einem anderen Gerät eingeht, das an dasselbe iCloud-Konto angeschlossen ist, aktualisiert Core Data die lokale Kopie der SQLite-Datenbank Ihrer App basierend auf dem empfangenen Änderungsprotokoll. iCloud und Core Data stellen sicher, dass jede lokale Datenbank mit denselben Änderungen aktualisiert wird. …
Bedenken Sie: Lohnt es sich, den Fortschritt des Hochladens der Protokolldatei zu messen, ohne den Inhalt eines Änderungsprotokolls zu interpretieren ?
Unterlagen
In der Mac Developer Library:
… Auf Dokumenten basierende Apps können die automatische Speicherung übernehmen, und ihre Dokumente werden zu geeigneten Zeiten automatisch gespeichert.…
Ebenfalls:
Automatische Strategien zum Speichern von Daten entlasten den Benutzer
… Geeignete Stellen in Ihrem Code, an denen benutzerbezogene Änderungen gespeichert werden sollen, und diese Änderungen automatisch auf die Festplatte schreiben. …
Zu den geeigneten Zeitpunkten, zu denen Sie Benutzerdaten automatisch speichern können, gehören:
- Wenn der Benutzer das App-Fenster schließt oder die App beendet (applicationWillTerminate :)
- Wenn die App deaktiviert ist (applicationWillResignActive :)
- Wenn der Benutzer Ihre App versteckt (applicationWillHide :)
- Wann immer der Benutzer eine gültige Änderung an den Daten in Ihrer App vornimmt
Der letzte Punkt bedeutet, dass Sie die Freiheit haben, die Daten des Benutzers jederzeit zu speichern, wenn dies sinnvoll ist. Wenn der Benutzer beispielsweise Felder eines Datensatzes bearbeitet, können Sie jeden Feldwert so speichern, wie er geändert wurde, oder Sie können warten und alle Felder speichern, wenn der Benutzer einen neuen Datensatz anzeigt. Durch diese Art von inkrementellen Änderungen wird sichergestellt, dass die Daten immer auf dem neuesten Stand sind, aber auch eine differenziertere Verwaltung Ihres Datenmodells erforderlich ist. …
Bedenken Sie: Diese Speichervorgänge sind möglicherweise so häufig und die Beträge so gering, dass sich eine Messung nicht lohnt.
item-info.db
Ich spielte mit SQLite Database Browser, um die item-info.db
Datenbank nach dem Peer zu durchsuchen, der mein lokaler Mac zu sein scheint. Wie ich vermutet hatte, konnte die App nur browsen, während das System die Datenbank nicht verwendete. Innerhalb von zwei Sekunden nach dem Bearbeiten einer Untitled.png
in iCloud mit Vorschau konnte ich die Datenbank nicht mehr durchsuchen.
Verweise
iCloud Design Guide
Mac App-Programmierhandbuch : Das Kerndesign der App: