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:],

Другие вопросы по тегам