2

我有一个 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:@"calculationMethod"]返回的实际值为0,对应的是“方法G”。我在这里忘记了什么,还是这根本不是 DefaultValue 的工作方式?

PS。在我将选择更改为其他内容然后返回“方法 B”后,我得到了正确的值。

4

1 回答 1

3

不清楚你的意思是什么[settings integerForKey:@"calculationMethod"]。如果settings是 的一个实例NSUserDefaults,那么您所看到的确实是预期的行为。Settings.bundle 中的默认值仅控制在“设置”应用中为您的应用显示的内容。NSUserDefaults它们对您在应用程序运行时加载的首选项完全没有影响。

要将相同的默认值添加到用户默认值中,您必须创建第二个 plist,其中包含键 ( @"calculationMethod") 及其在字典中的默认值。当您的应用启动时,打开此 plist 文件并将其传递给-[NSUserDefaults registerDefaults:].

于 2011-04-27T20:12:01.273 回答