Как использовать NSUbiquitousKeyValueStore и NSUserDefaults вместе
Документация не ясно, как использовать NSUbiquitousKeyValueStore
с крайними случаями.
Если я хочу установить значение, я понимаю, что я должен установить значение для обоих NSUserDefaults
а также NSUbiquitousKeyValueStore
Поскольку iCloud может быть отключен. Однако в моих тестах [NSUbiquitousKeyValueStore defaultStore]
вернуть действительный объект, даже если iCloud отключен (протестировано в Mac OS).
Кроме того, насколько я понимаю, если iCloud включен, NSUbiquitousKeyValueStore
Значения хранятся на диске (и доступны в автономном режиме). Какова причина использовать NSUserDefaults, если вы уверены, что у вас есть менее 64 КБ данных?
3 ответа
Это простой класс, написанный Mugunth Kumar (спасибо!), Который сделает всю работу за вас... Если у вас нет особых потребностей, добавьте одну строку кода, и он будет выполнять все чтение и запись в iCloud... все, что вам нужно сделать это читать и писать в NSUserDefaults как обычно...
Редактировать:
Осторожно, если вы удалите элемент из NSUserDefaults, код, на который я ссылался выше, не удалит элемент из облака. Всякий раз, когда вы удаляете элемент из NSUSerDefaults, пожалуйста, делайте то же самое для NSUbiquitousKeyValueStore, что и So:
NSUbiquitousKeyValueStore* keyValueStore=[NSUbiquitousKeyValueStore defaultStore];
[keyValueStore removeObjectForKey: yourKey];
Ответ Mugunth Kumar, представленный выше, прекрасно работает, если вы хотите синхронизировать все ваши NSUserDefaults!
Тем не менее, это ВСЕ или НИЧЕГО. Вы не можете выбрать или выбрать значения по умолчанию, которые вы хотите синхронизировать.
Я нашел этот урок, который может помочь, если вы хотите быть более разборчивым.
Я написал простую категорию iOS, которую можно использовать для сохранения значения также в NSUbiquitousKeyValueStore при сохранении в NSUserDefalt.
надеюсь, что это поможет: https://github.com/RiccardoPaolillo/NSUserDefault-iCloud