我有一个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”],它对应于“方法G”。 我忘了这里的东西,或者这不是DefaultValue的工作方式吗?
PS。将选择更改为其他内容然后返回“方法B”后,我得到正确的值。
答案 0 :(得分:3)
[settings integerForKey:@"calculationMethod"]
你的意思并不清楚。如果settings
是NSUserDefaults
的实例,那么您所看到的确实是预期的行为。 Settings.bundle中的默认值仅控制“设置”应用中为您的应用显示的内容。它们对您在应用运行时从NSUserDefaults
加载的偏好完全没有影响。
要在用户默认值中获得相同的默认值,您必须创建第二个包含键(@"calculationMethod"
)及其在字典中的默认值的plist。当您的应用启动时,请打开此plist文件并将其传递给-[NSUserDefaults registerDefaults:]
。