13 апреля 2018 г.
Это частый запрос пользователей… «У меня есть iPad и iPhone, как я могу сохранить избранное на одном устройстве, чтобы оно появлялось на другом устройстве?»
Если пользователям необходимо создать учетную запись для использования вашего приложения, эта функция может быть встроена в ваш сервер. Однако иногда мы не хотим заставлять пользователей создавать учетные записи для использования наших приложений. В этом случае есть простое решение, которое синхронизирует пользовательские данные между устройствами с помощью всего нескольких строк кода. Это iCloud Key-Value Storage. Работая точно так же, как локальный словарь, он уникален для каждого пользователя iCloud и автоматически синхронизируется на каждом устройстве, принадлежащем этому пользователю.
Если вы используете userDefaults для хранения пользовательских данных, вы уже на полпути. iCloud Key-Value Storage работает очень похожим образом, с дополнительным преимуществом, что данные сохраняются после удаления приложения.
Практический пример
Допустим, пользователь с двух устройств загружает ваше приложение, вводит дату своего рождения в одно и сохраняет ее. Вы хотите сохранить эти данные в хранилище ключей-значений iCloud, чтобы, когда они откроют ваше приложение на другом устройстве, дата рождения уже была там автоматически. Вот что делать…
Активируйте возможности iCloud
Выберите цель вашего проекта в Xcode и откройте раздел «Возможности». Активируйте iCloud и убедитесь, что установлен флажок «Хранилище значений ключа».
4 строки кода
Сначала создайте keyValueStore. Вы можете создать столько из них, сколько хотите, каждый фактически является отдельным словарем. Обычно я создаю глобальный экземпляр, который затем можно вызывать из любого класса.
var keyStore = NSUbiquitousKeyValueStore()
Добавьте данные в хранилище ключей
keyStore.set("03/04/1989", forKey: "userBirthdate")
Получить данные о новом экземпляре вашего приложения
if let storedUserBirthdate = keyStore.string(forKey: "userBirthdate") {
//Use retrieved birthdate
} else {
//Ask user for birthdate
}
Пока что keyStore действует точно так же, как UserDefaults, то есть данные будут храниться только локально. Чтобы разрешить всем устройствам пользователя iCloud доступ к данным, вам необходимо выполнить синхронизацию, вызвав:
keyStore.synchronize()
Это действительно так просто.
Следует иметь в виду, что синхронизация не обязательно происходит немедленно. Как говорится в документах Apple: синхронизация происходит «в подходящее время позже». iCloud Key-Value Storage предназначен для синхронизации данных, не требующих постоянного и сверхбыстрого обновления. Такие вещи, как пользовательские настройки и предпочтения.
Первоначально опубликовано на сайте janakshah.co.uk 13 апреля 2018 г.