Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье рассматривается работа с 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. Кроме того, он рассмотрел использование групп приложений для обмена данными между расширением и родительским приложением или между приложениями в группе.