iphone:可以从settings.bundle中的PSMultiValue说明符获取标题吗?

iphone:可以从settings.bundle中的PSMultiValue说明符获取标题吗?,iphone,settings.bundle,Iphone,Settings.bundle,我计划使用pickerview中settings.bundle中PSMultiValue说明符中的标题。我只知道如何根据settings.bundle中的键获取所选值。是否可以根据键获取所有标题?(可能有更优雅的方式)。您可以获取设置词典并浏览其内容(前提是您了解其内部结构): 请注意,通过这种方式获得的标题不是本地化的。这是我的版本,它还使用说明符键来定位PSMultiValue说明符,而不记得它位于哪个索引。索引可能会随着时间的推移而变化(由于设置包中的更改) NSString*setti

我计划使用pickerview中settings.bundle中PSMultiValue说明符中的标题。我只知道如何根据settings.bundle中的键获取所选值。是否可以根据键获取所有标题?

(可能有更优雅的方式)。您可以获取设置词典并浏览其内容(前提是您了解其内部结构):


请注意,通过这种方式获得的标题不是本地化的。

这是我的版本,它还使用说明符键来定位PSMultiValue说明符,而不记得它位于哪个索引。索引可能会随着时间的推移而变化(由于设置包中的更改)


NSString*settingsBundle=[[NSBundle mainBundle]pathForResource:@“bundle”类型的“设置”]stringByAppendingPathComponent:@“Root.plist”]

NSString* listPath = [[[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"] stringByAppendingPathComponent:@"Root.plist"];
NSDictionary* ttDict = [NSDictionary dictionaryWithContentsOfFile:listPath];
if (ttDict != nil){
    NSArray* prefsArray = [ttDict objectForKey:@"PreferenceSpecifiers"];
    // Next you get dictionary for required setting by its index (you should know it)
    NSDictionary* settingDict = [prefsArray objectAtIndex: index];
    NSArray* titlesArray = [settingDict objectForKey:@"Titles"]; // Voila
}
NSDictionary* rootPlist = [NSDictionary dictionaryWithContentsOfFile:settingsBundle];

if (rootPlist == nil)
    return nil;

NSArray* specifiers = [rootPlist objectForKey:@"PreferenceSpecifiers"];

NSDictionary *multiValueSpecifier = nil;

for (NSDictionary *specifier in specifiers)
{
    if ([[specifier objectForKey:@"Key"] isEqualToString:speficierKey] == YES &&
        [[specifier objectForKey:@"Type"] isEqualToString:@"PSMultiValueSpecifier"] == YES)
    {
        multiValueSpecifier = specifier;
        break;
    }
}

if (multiValueSpecifier == nil)
    return nil;

NSArray* titlesArray = [multiValueSpecifier objectForKey:@"Titles"];
NSArray* valuesArray = [multiValueSpecifier objectForKey:@"Values"];

NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:titlesArray 
                                                       forKeys:valuesArray];

return dictionary;