Хранилище значений ключей iCloud ведет себя как NSUserDefaults

Я не использую симулятор. В коде вроде все нормально. Я могу читать и писать в NSUbiquitousKeyValueStore, и он сохраняет данные между запусками приложения.

[[NSUbiquitousKeyValueStore defaultStore] synchronize]

возвращает ИСТИНА. Однако обновления никогда не поступают на другие устройства, и если я удалю приложение с одного устройства и переустановлю его, NSUbiquitousKeyValueStore стирается. По сути, он ведет себя как псевдоним NSUserDefaults. У меня настроены права, а iCloud включен на портале подготовки. В моих целевых настройках отмечены флажки «Включить iCloud и хранилище ключей-значений», а для параметра «Использовать хранилище с идентификатором» задан идентификатор моего пакета приложений. У меня есть одна запись в «Ubiquity Containers», которая также является именем моего пакета. Есть что-то, чего мне не хватает? Конфигурация? Шаг инициализации? Спасибо.


person Brent    schedule 11.04.2013    source источник


Ответы (2)


Вы подписываетесь на уведомление NSUbiquitousKeyValueStoreDidChangeExternallyNotification и ведете дело NSUbiquitousKeyValueStoreInitialSyncChange? При первом запуске приложения то, что вы пишете в NSUbiquitousKeyValueStore, может быть отменено, потому что «первоначальная синхронизация» с iCloud не произошла, и в этом случае вы получите это уведомление с параметром NSUbiquitousKeyValueStoreChangeReasonKey, содержащим значение NSUbiquitousKeyValueStoreInitialSyncChange.

person baris    schedule 11.04.2013

Мой коллега указал, что я должен включить «Документы и данные» в настройках iCloud. Это решило проблему.

person Brent    schedule 11.04.2013