Загружать константы конфигурации динамически, вызывая сеттеры? - PullRequest
1 голос
/ 18 января 2010

Я ищу хороший способ установить мои константы конфигурации. Моя идея состояла в том, чтобы создать синглтон с моими свойствами конфигурации. Скажите mySingletonConf с: URL, USERID, ПАРОЛЬ. Во время инициализации sharedInstance необходимо прочитать файл конфигурации, чтобы установить свойства в mySingletonConf.

  1. Должен ли я использовать свойства для этого типа констант? Я так понимаю, они должны быть свойствами уровня класса?
  2. Можно ли установить конфигурацию динамически? И. е. прочитав все методы Setter метода mySingletonConf, затем выполнив поиск в загруженной конфигурации (.plist-Dictionary) по ключу == имени свойства, а затем вызовите установщик со значением?

Было бы неплохо установить все динамически, на случай, если понадобятся новые константы. Тогда мне просто нужно создать новые свойства и настроить файлы конфигурации. Я на правильном пути? Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 20 января 2010

Ну, это возможно :) Я закончил тем, что написал упомянутый Singleton, который имеет общедоступные свойства только для чтения и доступ для чтения и записи из класса (для этого использовались категории, см. пример частного установщика ).

Переменные класса заполняются значениями из файла .plist во время инициализации. Я использовал API времени выполнения, чтобы получить список переменных (просто поиск «список переменных target-c» в Stackoverflow) и получить значение из словаряloaded.plist, используя имя переменной в качестве ключа.

Значения можно использовать почти как константы:

MyConstants* testConstants = [MyConstants sharedInstance];
NSLog(testConstants.PARAM1);
0 голосов
/ 18 января 2010

NSUserDefaults может позаботиться о многих вещах, и это гарантирует, что конфигурация зависит от пользователя, поэтому, если несколько пользователей на одном Mac используют вашу программу, они могут настроить вашу программу независимо.В Интерфейсном Разработчике также есть объект для привязки элементов вашего пользовательского интерфейса, что делает вещи еще проще.Если вы do хотите сделать свою конфигурацию общесистемной, вам следует использовать Core Foundation Preference Utilities .

. Для хранения паролей вы можете использовать Apple.Брелок Услуги .Пользователь может указать, каким программам разрешено использовать сохраненный пароль (который в идеале должен быть только вашим).Хранение паролей в NSUserDefaults также возможно, если пароль не имеет особого значения.

Не изобретайте колесо заново;Конфигурационные услуги для пользователей или хостов для всего приложения предоставляются для вас.

...