Значение по умолчанию для параметра PSMultiValueSpecifier

#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.