pickerview의 settings.bundle에서 PSMultiValueSpecifier의 제목을 사용할 계획입니다. 나는 settings.bundle에서 키를 기반으로 선택한 값을 얻는 방법 만 알고 있습니다. 열쇠를 기반으로 모든 제목을 얻을 수 있습니까?iphone : settings.bundle의 PSMultiValueSpecifier에서 제목을 가져올 수 있습니까?
0
A
답변
1
여기에 지정자 KEY를 사용하여 어떤 인덱스가 있는지 기억하지 않고 PSMultiValueSpecifier를 찾는 내 버전입니다. 시간이 지남에 따라 색인이 변경 될 수 있습니다 (설정 번들의 변경으로 인해).
NSString* settingsBundle = [[[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"] stringByAppendingPathComponent:@"Root.plist"];
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;
1
(더 우아한 방법이있을 수 있습니다.) 당신은 (당신은 그것의 내부 구조를 알고 제공) 설정 사전을 얻고 그 내용을 찾아 볼 수 있습니다 :이 방법을 얻을 제목 지역화되지 않습니다
가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
}
참고.
+0
네, 이건 꿈처럼 작동합니다, 감사합니다! :) – Madoc
재미있는 솔루션, 그것을 공유 주셔서 감사합니다 :) – Madoc