In meiner App muss ich eine Einstellung zwischen verschiedenen Geräten teilen, auf denen die App ausgeführt wird. Ich möchte, dass das erste Gerät, das die App installiert, den Master-Wert der Einstellung festlegt, dann sollten alle anderen Geräte diese Einstellung erhalten und nicht überschreiben.
Wie stelle ich sicher, dass ich zuerst überprüfe, ob iCloud einen Wert hat, bevor ich den Wert festlege? Ich überschreibe also kein vorhandenes.
Sollte ich darauf warten, dass das NSUbiquitousKeyValueStoreInitialSyncChange-Ereignis gesendet wird, und dann nach einem eventuell vorhandenen Wert suchen und ihn sonst zum ersten Mal einstellen? Wenn ja, kann ich mich auf das NSUbiquitousKeyValueStoreInitialSyncChange-Ereignis verlassen? Wenn nicht, dann könnte sich herausstellen, dass der iCloud-Wert bei diesem Ansatz überhaupt nicht gesetzt wird.
Wenn ich versuche, einen Wert festzulegen, bevor NSUbiquitousKeyValueStoreInitialSyncChange zum ersten Mal ausgelöst wird, wird er dann verworfen und dann NSUbiquitousKeyValueStoreInitialSyncChange mit den vorhandenen Daten im Speicher ausgelöst?
Ich habe gehört, NSUbiquitousKeyValueStoreInitialSyncChange wird nicht ausgelöst, wenn keine Werte im Speicher vorhanden sind, wenn es das erste Mal syndet?
Ich habe die Apple-Dokumentation zu diesem Thema gelesen und die Antworten hier auf Stack Overflow gesehen, aber ich habe nicht verstanden, wie ich genau das machen soll.
Wie kann ich sicherstellen, dass ich einen vorhandenen Wert nicht beim ersten Starten / Installieren der App überschreibe?
Es gibt keine Möglichkeit für Sie, sicher zu wissen, dass Sie mindestens einmal effektiv mit dem entfernten Geschäft synchronisiert haben und Sie sollten sich nicht darauf verlassen (stellen Sie sich vor, dass kein iCloud-Konto eingerichtet ist oder keine Verbindung oder iCloud-Server ausgefallen sind .: Sie möchten nicht, dass Ihr Benutzer darauf wartet, dass Sie sicher sind, dass Sie mit der Cloud synchronisiert sind, da dies ewig dauern kann oder sogar nie geschieht.)
Was Sie tun sollten:
NSUbiquitousKeyValueStore
als Konflikt angesehen. In diesem konkreten Fall (anfängliche Synchronisierung) besteht die automatische Richtlinie darin, Ihren lokalen Wert zurückzusetzen und stattdessen den Wert in der Cloud zu bevorzugen. Ihre Anwendung wird also von NSUbiquitousKeyValueStoreDidChangeExternallyNotification
dieser Zurücksetzung mit dem NSUbiquitousKeyValueStoreInitialSyncChange
Grund benachrichtigt. Tags und Links objective-c ios icloud ios5 nsubiquitouskeyvaluestore