Предпочтительная система
Предпочтения являются приложением или системными опциями, позволяющими пользователям настраивать свою рабочую среду. Большинство приложений читает в некоторой форме пользовательских настроек. Например, основанное на документе приложение может сохранить предпочтения стандартного шрифта, автоматических опций сохранения или информации об установке страницы. Предпочтения не ограничиваются приложениями, как бы то ни было. Можно считать и записать информацию о предпочтении, включая пользовательские настройки, от любых платформ или библиотек, которые Вы определяете.
Предпочтительная система OS X включает встроенную поддержку сохранения и восстановления пользовательских настроек через сеансы. И приложения Углерода и Какао могут использовать Preference Services Базовой Основы для чтения и записи информации о предпочтении. Приложения какао могут также использовать NSUserDefaults
пользовательские настройки класса чтения.
Предпочтительная система связывает предпочтительные значения с ключом, который Вы используете для получения предпочтительного значения позже. Пользовательские настройки имеют объем на основе комбинации пользовательского идентификатора для входа в систему, идентификатора приложения, и размещают (компьютер) имя. Этот механизм позволяет Вам создавать предпочтения, применяющиеся на разных уровнях. Например, можно сохранить предпочтительное значение, применяющееся к любому из следующих объектов:
текущий пользователь Вашего приложения на текущем узле
все пользователи Вашего приложения на определенном узле соединились с локальной сетью
текущий пользователь Вашего приложения на любом узле соединился с локальной сетью (обычная категория для пользовательских настроек)
любой пользователь любого приложения на любом узле соединился с локальной сетью
Приложения должны сохранить только те предпочтения, представляющие информацию, полученную от пользователя. Хранение того же набора предпочтений по умолчанию каждого пользователя является неэффективным способом управлять предпочтениями Вашего приложения. Предпочтения сохранены в файлах списка свойств, которые должны быть проанализированы для чтения в информации о предпочтении. Более эффективный способ управлять предпочтениями состоит в том, чтобы сохранить ряд предпочтений по умолчанию внутренне и затем применить любые настроенные пользователями предпочтения поверх набора по умолчанию.
Как сохранены предпочтения
Предпочтительная система хранит предпочтительные данные в файлах, расположенных в Library/Preferences
папка в надлежащем домене файловой системы. Например, если предпочтение применяется к отдельному пользователю, файл записан в Library/Preferences
папка в корневом каталоге пользователя. Если предпочтение применяется ко всем пользователям в сети, оно входит /Network/Library/Preferences
.
Имя каждого файла в Library/Preferences
состоит из идентификатора пакета приложения, сопровождаемого .plist
расширение. Например, идентификатор пакета для приложения TextEdit com.apple.TextEdit
таким образом, его предпочтительное имя файла com.apple.TextEdit.plist
.
Чтобы гарантировать, что нет никаких конфликтов имен, Apple строго рекомендует, чтобы идентификаторы пакета приняли ту же форму как имена пакета Java — уникальное доменное имя Вашей компании, сопровождаемое именем библиотеки или приложением. Например, Средство поиска использует идентификатор com.apple.finder
. Эта схема минимизирует возможность коллизии имени и оставляет Вас свободой управлять пространством имен идентификатора под Вашим корпоративным доменом. Вы присваиваете это значение CFBundleIdentifier
введите свой информационный файл списка свойств.
Если приложение пытается записать предпочтения в расположение кроме, проблемы могли бы последовать Library/Preferences
в надлежащем домене файловой системы. С одной стороны, предпочтения APIs не разработаны для этого различия. Но что еще более важно, предпочтения, сохраненные в неожиданных расположениях, исключены из предпочтительного списка поиска и так не могли бы быть замечены другими приложениями, платформами или системными службами.
В версии 10.3 OS X и ранее, в предпочтениях сохранили формат списка свойств XML. В версии 10.4 OS X и позже, предпочтения сохраняются в двоичном файле plist формат. Можно преобразовать файл от одного формата до другого использования plutil(1)
инструмент (например так, чтобы можно было исследовать plist в форме XML), но Вы не должны полагаться на формат файла. Необходимо воздержаться от редактирования предпочтительных файлов вручную. Когда Ваше приложение пытается считать файл позже, ввод неправильной информации или некорректных данных мог вызвать проблемы. Корректным способом извлечь информацию из предпочтительных доменов в Вашем приложении является через предпочтения APIs.
Предпочтительные домены
Когда Ваше приложение ищет существующее предпочтительное значение, предпочтительная система использует текущий предпочтительный домен для ограничения объема поиска. Точно так же, когда Ваше приложение выписывает новые предпочтения, значения ограничены по объему к текущему домену.
Предпочтительные домены идентифицируются тремя данными: идентификатор пользователя, идентификатор приложения и имя хоста. В большинстве случаев Вы указали бы предпочтения текущего пользователя и приложения. Однако Вы могли бы также решить сохранить предпочтения прикладного уровня. Чтобы сделать это, Вы использовали бы функции в Базовых Предпочтительных Утилитах Основы для указания точно, какой домен Вы хотели использовать. Для получения информации о том, как использовать эти подпрограммы, посмотрите, что Предпочтения Программируют Темы для Базовой Основы.
Таблица 1 показывает все предпочтительные домены. Подпрограммы для получения предпочтений перерывают предпочтительные домены в порядке, показанном здесь, пока они не находят требуемый ключ. Таким образом, если предпочтение не найдено в более специфичном для пользователя и специализированном домене, подпрограммы ищут более глобальные домены информацию.
Утилита значений по умолчанию
Предпочтительная система OS X включает названную утилиту командной строки defaults
для чтения, записи и удаления предпочтений (также известный как пользовательские значения по умолчанию) от домена приложения или других доменов. defaults
утилита неоценима как средство для отладки приложений. Много предпочтений доступны через Предпочтительное диалоговое окно приложения (или эквивалент), но предпочтения, такие как позиция окна не всегда доступны. Для тех предпочтений можно просмотреть их с defaults
утилита.
Для выполнения утилиты запустите Терминальное приложение и, в оболочке BSD, войдите defaults
плюс опции команды, описывающие, что Вы хотите. Для краткого описания синтаксиса и параметров, выполненных defaults
команда отдельно. Для большего количества полного описания считайте страницу справочника для defaults
или выполненный команда с usage
параметр:
$ defaults usage |
Необходимо избежать изменять значения с помощью defaults
инструмент, в то время как работает целевое приложение. При внесении такого изменения приложение вряд ли будет видеть изменение и более вероятно перезаписывать новое значение, которое Вы просто указали.