У вас нет гарантии, что NSUbiquitousKeyValueStore
завершит первую синхронизацию, так как ваше приложение запускается в первый раз. (На самом деле, в iOS 5 синхронизация часто начинается при первом запуске приложения).
Невозможно узнать, произошла ли первая начальная синхронизация, продолжается ли она или уже завершена. Вы можете (на самом деле должны) подписаться на NSUbiquitousKeyValueStoreDidChangeExternallyNotification
. Хитрость заключается в том, что если ваш магазин на сервере iCloud пуст, вы не получите никаких уведомлений после первоначальной синхронизации (поскольку ваш локальный магазин пуст и облачный магазин тоже пуст, ничего не изменилось «внешне» после первоначальной синхронизации). синхронизировать…)
Обычно вы не должны полагаться на первоначальную синхронизацию.
Будьте оптимистичны при запуске, даже если ваш магазин пуст, сразу же продвигайте свои ценности (например, свой уникальный идентификатор). Если первоначальная синхронизация происходит одновременно или позже, и на сервере уже есть какое-то значение, ваши локальные значения будут сброшены до значений сервера, и вы получите уведомление NSUbiquitousKeyValueStoreDidChangeExternallyNotification
с причиной NSUbiquitousKeyValueStoreInitialSyncChange
.
Наконец, если вы действительно думаете, зная о завершении начальной синхронизации или нет, отправьте сообщение об ошибке на bugreport.apple.com и объясните, почему вам это действительно нужно.
person
Julien
schedule
20.07.2012