#iphone #cocoa #nsuserdefaults #icloud #nsubiquitouskeyvaluestore
#iPhone #cocoa #nsuserdefaults #icloud #nsubiquitouskeyvaluestore
Вопрос:
В документации неясно, как использовать NSUbiquitousKeyValueStore
в крайних случаях.
Если я хочу установить значение, я понимаю, что я должен установить значение для обоих NSUserDefaults
и NSUbiquitousKeyValueStore
, поскольку iCloud может быть отключен. Однако в моих тестах [NSUbiquitousKeyValueStore defaultStore]
возвращает допустимый объект, даже если iCloud отключен (протестировано на Mac OS).
Кроме того, насколько я понимаю, если включен iCloud, NSUbiquitousKeyValueStore
значения сохраняются на диске (и доступны в автономном режиме). По какой причине следует использовать NSUserDefaults, если вы уверены, что у вас меньше 64 КБ данных?
Ответ №1:
Это простой класс, написанный Мугунтом Кумаром (спасибо!), который выполняет всю работу за вас… Если у вас нет особых потребностей, добавьте одну строку кода, и она выполнит все операции чтения и записи в iCloud… все, что вам нужно сделать, это прочитать и записать в NSUserDefaults как обычно…
Редактировать:
Кстати, если вы удалите элемент из NSUserDefaults, код, на который я ссылался выше, не удалит элемент из облака. Всякий раз, когда вы удаляете элемент из NSUserDefaults, пожалуйста, делайте то же самое с NSUbiquitousKeyValueStore таким образом:
NSUbiquitousKeyValueStore* keyValueStore=[NSUbiquitousKeyValueStore defaultStore];
[keyValueStore removeObjectForKey: yourKey];
Ответ №2:
Приведенный выше ответ Мугунта Кумара прекрасно работает, если вы хотите синхронизировать все свои NSUserDefaults!
Однако это подход «ВСЕ или НИЧЕГО». Вы не можете выбрать значения по умолчанию, которые хотите синхронизировать.
Я нашел это руководство, которое может помочь, если вы хотите быть более разборчивым.
Ответ №3:
Я написал простую категорию iOS, которую можно использовать для сохранения значения также в NSUbiquitousKeyValueStore при сохранении в NSUserDefalt.
надеюсь, это поможет:https://github.com/RiccardoPaolillo/NSUserDefault-iCloud