DefaultValue для PSMultiValueSpecifier
У меня есть приложение для 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" был выбран по умолчанию, который я определяю установкой DefaultValue. Однако при этом выбирается только "Метод B" в списке, но фактическое значение, возвращаемое значением [settings integerForKey:@"analysisMethod"], равно 0, что соответствует "Методу G". Я забыл что-то здесь или это не так, как DefaultValue работает вообще?
PS. После того, как я изменил выбор на что-то другое, а затем вернулся к "Методу B", я получил правильное значение.
1 ответ
Непонятно, что вы подразумеваете под [settings integerForKey:@"calculationMethod"]
, Если settings
это пример NSUserDefaults
То, что вы видите, действительно ожидаемое поведение. Значения по умолчанию в файле Settings.bundle определяют только то, что отображается для вашего приложения в приложении "Настройки". Они никак не влияют на предпочтения, которые вы загружаете из NSUserDefaults
пока ваше приложение работает.
Чтобы получить те же значения по умолчанию в пользовательских значениях по умолчанию, вам нужно будет создать второй список, содержащий ключи (@"calculationMethod"
) и их значения по умолчанию в словаре. Когда ваше приложение запустится, откройте этот plist-файл и передайте его -[NSUserDefaults registerDefaults:]
,