#iphone #settings.bundle
#iPhone #настройки.пакет
Вопрос:
У меня есть приложение для iPhone, в котором я определил Settings.bundle со следующими настройками:
<dict>
<key>DefaultValue</key>
<integer>2</integer>
<key>Key</key>
<string>calculationMethod</string>
<key>Title</key>
<string>CALCULATION_METHOD</string>
<key>Titles</key>
<array>
<string>Method A</string>
<string>Method B</string>
<string>Method C</string>
<string>Method D</string>
<string>Method E</string>
<string>Method F</string>
<string>Method G</string>
</array>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Values</key>
<array>
<integer>3</integer>
<integer>2</integer>
<integer>5</integer>
<integer>4</integer>
<integer>1</integer>
<integer>6</integer>
<integer>0</integer>
</array>
</dict>
Как вы можете видеть, я хочу, чтобы «Метод B» был выбран по умолчанию, который я определяю, устанавливая значение по умолчанию. Однако при этом выбирается только «Метод B» в списке, но фактическое значение, возвращаемое [settings integerForKey:@»calculationMethod»], равно 0, что соответствует «Методу G».
Я что-то здесь забываю или значение по умолчанию работает совсем не так?
PS. После того, как я изменяю выделение на что-то другое, а затем возвращаюсь к «Методу B», я получаю правильное значение.
Ответ №1:
Не ясно, что вы имеете в виду под [settings integerForKey:@"calculationMethod"]
. Если settings
это экземпляр NSUserDefaults
, то то, что вы видите, действительно является ожидаемым поведением. Значения по умолчанию в Settings.bundle определяют только то, что отображается для вашего приложения в приложении «Настройки». Они никак не влияют на настройки, которые вы загружаете из NSUserDefaults
во время работы вашего приложения.
Чтобы получить те же значения по умолчанию в пользовательских значениях по умолчанию, вам нужно будет создать второй список, содержащий ключи ( @"calculationMethod"
) и их значения по умолчанию в словаре. Когда ваше приложение запустится, откройте этот файл plist и передайте его в -[NSUserDefaults registerDefaults:]
.
Комментарии:
1. Спасибо за ответ, Оле. Да, вы правы,
settings
является экземпляромNSUserDefaults
. Ваш ответ подтверждает мои подозрения о ролиDefaultValue
, но, честно говоря, я вообще не понимаю цели такого поведения. Я имею в виду, что здесь есть реальная ошибка несоответствия, поскольку вы устанавливаете отображаемое значение в одном месте, а фактическое значение в другом.2. Я склонен согласиться. Вы должны отправить отчет об ошибке / запрос на улучшение в Apple.