Auf vorhandene iCloud-Werte warten, bevor ein Wert festgelegt wird?

8

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.

  1. Wie stelle ich sicher, dass ich zuerst überprüfe, ob iCloud einen Wert hat, bevor ich den Wert festlege? Ich überschreibe also kein vorhandenes.

  2. 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.

  3. 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?

  4. 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?

    
thejaz 27.08.2012, 11:37
quelle

1 Antwort

8

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:

  • Wenn Sie beginnen, überprüfen Sie den Laden, um zu sehen, ob es einen Wert gibt.
  • Wenn es keinen Wert gibt, drücken Sie einfach Ihren eigenen Wert.
  • Wenn die anfängliche Synchronisierung mit dem Server noch nicht erfolgt ist und tatsächlich ein Wert in der Cloud vorhanden ist, wird dies vom 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.
  • Wenn es in der Cloud tatsächlich keinen Wert gibt, wird Ihr lokaler Wert erhöht und alle werden glücklich sein.
Julien 09.09.2012, 05:33
quelle