Как использовать NSUbiquitousKeyValueStore и NSUserDefaults вместе - PullRequest
8 голосов
/ 09 ноября 2011

В документации не ясно, как использовать NSUbiquitousKeyValueStore с крайними случаями.

Если я хочу установить значение, я понимаю, что я должен установить значение как NSUserDefaults, так и NSUbiquitousKeyValueStore, поскольку iCloud может быть отключен. Однако в моих тестах [NSUbiquitousKeyValueStore defaultStore] возвращает действительный объект, даже если iCloud отключен (протестировано в Mac OS).

Кроме того, насколько я понимаю, если iCloud включен, значения NSUbiquitousKeyValueStore сохраняются на диске (и доступны в автономном режиме). Какова причина использовать NSUserDefaults, если вы уверены, что у вас есть менее 64 КБ данных?

Ответы [ 3 ]

1 голос
/ 31 декабря 2011

Ответ Mugunth Kumar, приведенный выше, прекрасно работает, если вы хотите синхронизировать все ваши NSUserDefaults!

Однако это подход ALL или NOTHING.Вы не можете выбрать или выбрать значения по умолчанию, которые вы хотите синхронизировать.

Я нашел это Учебное пособие , которое может помочь, если вы хотите быть более разборчивым.

1 голос
/ 21 ноября 2011

я использую http://blog.mugunthkumar.com/coding/ios-code-mkicloudsync-sync-your-nsuserdefaults-to-icloud-with-a-single-line-of-code/

Это простой класс, написанный Mugunth Kumar (спасибо!), Который сделает всю работу за вас ... Если у вас нет особых потребностей, добавьте одну строку кода, и он будет выполнять все чтение и запись в iCloud ... все, что вам нужно сделать, это читать и писать в NSUserDefaults как обычно ...

Edit:

Осторожно, если вы удалите элемент из NSUserDefaults, код, на который я ссылался выше, не удалит элемент из облака. Каждый раз, когда вы удаляете элемент из NSUSerDefaults, пожалуйста, делайте то же самое для NSUbiquitousKeyValueStore, что и So:

NSUbiquitousKeyValueStore* keyValueStore=[NSUbiquitousKeyValueStore defaultStore];
[keyValueStore removeObjectForKey: yourKey];
0 голосов
/ 06 января 2014

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

надеюсь, что это поможет: https://github.com/RiccardoPaolillo/NSUserDefault-iCloud

...