Работа с пользовательскими значениями по умолчанию в Xamarin.iOS
В этой статье рассматривается работа с NSUserDefault для сохранения параметров по умолчанию в приложении или расширении Xamarin.iOS.
Класс NSUserDefaults
предоставляет способ программного взаимодействия приложений и расширений iOS с системой по умолчанию на уровне системы. Используя систему по умолчанию, пользователь может настроить поведение приложения или стили для удовлетворения своих предпочтений (на основе дизайна приложения). Например, чтобы представить данные в метриках и имперских измерениях или выбрать определенную тему пользовательского интерфейса.
При использовании с группами NSUserDefaults
приложений также предоставляет способ обмена данными между приложениями (или расширениями) в данной группе.
Сведения о значениях по умолчанию пользователя
Как указано выше, значения по умолчанию пользователя (NSUserDefaults
) можно добавить в приложение (или расширение) и использовать для предоставления настраиваемых параметров, которые пользователь может изменить, чтобы настроить внешний вид или операцию приложения во время выполнения.
При первом выполнении NSUserDefaults
приложения считывает ключи и значения из базы данных по умолчанию пользователя приложения и кэширует их в память, чтобы избежать открытия и чтения базы данных каждый раз, когда требуется значение.
Внимание
Apple больше не рекомендует разработчику Synchronize
вызывать метод для синхронизации кэша в памяти с базой данных напрямую. Вместо этого он будет автоматически вызываться через периодические интервалы, чтобы сохранить кэш в памяти в синхронизации с базой данных по умолчанию пользователя.
Класс NSUserDefaults
содержит несколько удобных методов чтения и записи значений предпочтений для распространенных типов данных, таких как string, целочисленное число, float, boolean и URL-адреса. Другие типы данных можно архивировать с помощью NSData
, а затем считывать из базы данных по умолчанию пользователя или записывать их из нее. Дополнительные сведения см. в разделе "Настройки Apple" и руководство по программированию Параметры.
Доступ к общему экземпляру NSUserDefaults
Экземпляр по умолчанию общего пользователя предоставляет доступ к пользовательским значениям по умолчанию для текущего пользователя устройства. Если объект Shared Defaults не существует, он создается при первом доступе и инициализации со следующими сведениями:
- Состоящий
NSArgumentDomain
из синтаксического анализа по умолчанию из текущего приложения. - Домен идентификатора пакета приложения.
- Состоящий
NSGlobalDomain
из значений по умолчанию, общих для всех приложений. - Отдельный домен для каждого предпочитаемого языка пользователя.
- Набор
NSRegistrationDomain
временных значений по умолчанию, которые могут быть изменены приложением, чтобы убедиться, что поиски всегда успешны.
Чтобы получить доступ к экземпляру по умолчанию общего пользователя, используйте следующий код:
// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
Доступ к экземпляру группы приложений NSUserDefaults
Как указано выше, с помощью групп NSUserDefaults
приложений можно использовать для обмена данными между приложениями (или расширениями) в данной группе. Сначала необходимо убедиться, что группа приложений и необходимые идентификаторы приложений были правильно настроены в разделе "Сертификаты, идентификаторы и профили" в Центр разработки iOS и были установлены в среде разработки.
Затем проекты приложений и (или) расширений должны иметь один из допустимых идентификаторов приложений, созданных выше, и Entitlements.plist
файл должен быть включен в пакет приложений с включенными и указанными группами приложений.
При этом доступ к общим значениям пользователя группы приложений по умолчанию можно получить с помощью следующего кода:
// Get App Group User Defaults
var plist = new NSUserDefaults ("group.com.xamarin.todaysharing", NSUserDefaultsType.SuiteName);
Где group.com.xamarin.todaysharing
находится группа приложений, созданная в сертификатах, идентификаторах и профилях , к которым вы хотите получить доступ. Дополнительные сведения см. в документации по возможностям группы приложений .
Чтение значений по умолчанию
После получения доступа к требуемой базе данных по умолчанию можно считывать значения из значений по умолчанию с помощью пар "ключ-значение" и нескольких удобных методов на основе типа считываемых данных:
ArrayForKey
— возвращает массив для заданногоNSObjects
значения ключа.BoolForKey
— возвращает логическое значение для заданного ключа.DataForKey
— возвращаетNSData
объект для заданного ключа.DictionaryForKey
— возвращаетNSDictionary
значение для заданного ключа.DoubleForKey
— возвращает двойное значение для заданного ключа.FloatForKey
— возвращает значение с плавающей запятой для заданного ключа.IntForKey
— возвращает целочисленное значение для заданного ключа.StringArrayForKey
— возвращает массив объектов из заданногоString
значения ключа.StringForKey
— возвращает строковое значение для заданного ключа.URLForKey
— возвращаетNSUrl
значение для заданного ключа.
Например, следующий код считывает логическое значение из пользовательских значений по умолчанию:
// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...
// Get value
var useHeader = plist.BoolForKey("UseHeader");
Написание значений по умолчанию
Как и при чтении приведенных выше значений, после доступа к требуемой базе данных пользователя по умолчанию можно записывать значения в значения по умолчанию с помощью пар "ключ-значение" и нескольких удобных методов на основе типа записываемых данных:
SetBool
— записывает заданное логическое значение в заданный ключ.SetDouble
— записывает заданное двойное значение в заданный ключ.SetFloat
— записывает заданное значение с плавающей запятой в заданный ключ.SetString
— записывает заданное строковое значение в заданный ключ.SetURL
— записывает заданное значение URL-адреса вNSUrl
заданный ключ.
Например, следующий код будет записывать логическое значение для пользовательских значений по умолчанию:
// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...
// Save value
plist.SetBool(useHeader, "UseHeader");
...
Внимание
При первом выполнении NSUserDefaults
приложения считывает ключи и значения из базы данных по умолчанию пользователя приложения и кэширует их в память, чтобы избежать открытия и чтения базы данных каждый раз, когда требуется значение.
Итоги
В этой статье описан NSUserDefaults
класс и его использование для предоставления набора параметров, которые может использовать конечный пользователь для настройки приложения Xamarin.iOS. Кроме того, он рассмотрел использование групп приложений для обмена данными между расширением и родительским приложением или между приложениями в группе.