2010-11-10 69 views
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添加的条目保留。

回答

3

无论如何,这将无法在App Store应用中运行。您无法修改设置包,因为这会修改App Store应用不允许的应用包内容,因为它会使其签名无效。

相关问题