2
我一直在尝试使用Settings.bundle作为选项的存储,使用PSMultiValueSpecifier,它将允许用户选择其中一个选项。所以我需要能够在Settings.bundle中添加新的选项。看起来很简单。将选项添加到Settings.bundle中的PSMultiValueSpecifier
这里是PSMultiValueSpecifier在Root.plist
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Title</key>
<string>Options</string>
<key>DefaultValue</key>
<string></string>
<key>Key</key>
<string>optionSelection_preference</string>
<key>Values</key>
<array>
<string>option_1_key</string>
</array>
<key>Titles</key>
<array>
<string>Option 1</string>
</array>
样本所以我尝试添加“选项2”和它的关键。所以我写了下面的代码(部分):
NSDictionary* rootPlist = [NSDictionary dictionaryWithContentsOfFile:settingsBundle];
if (rootPlist == nil)
return NO;
NSArray* specifiers = [rootPlist objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *multiValueSpecifier = nil;
for (NSMutableDictionary *specifier in specifiers)
{
if ([[specifier objectForKey:@"Key"] isEqualToString:speficierKey] == YES && [[specifier objectForKey:@"Type"] isEqualToString:@"PSMultiValueSpecifier"] == YES)
{
multiValueSpecifier = specifier;
break;
}
}
if (multiValueSpecifier == nil)
return NO;
NSMutableArray* titlesArray = [[multiValueSpecifier objectForKey:@"Titles"] mutableCopy];
NSMutableArray* valuesArray = [[multiValueSpecifier objectForKey:@"Values"] mutableCopy];
[titlesArray addObject:title];
[valuesArray addObject:value];
[multiValueSpecifier setObject:titlesArray forKey:@"Titles"];
[multiValueSpecifier setObject:valuesArray forKey:@"Values"];
return [rootPlist writeToFile:settingsBundle atomically:YES];
该代码似乎工作,我看到Settings.bundle中的更改。
问题:重新加载时,新条目消失,只有从XCode添加的条目保留。