2011-12-18 2 views
0

나는 여러 개의 키가있는 plist를 가지고있다. 나는 현재 배열에 모든 키를로드 할 수 있지만 배열에 string 유형의 키만로드하려고합니다. 내가 문자열 형식의 plist에서 키 이름 만 얻을 수 있도록 코드를 작성하는 방법이 있습니까?특정 유형의 키만을 plist에서 배열로 가져 오려면 어떻게해야합니까?

감사합니다.

+0

b.t.w. 어떻게 plist를로드합니까? NSArray 나 NSDictionary 또는 다른 Objective C 객체에 직접로드하고 있습니까? –

+0

NSDictionary를 사용하고 plist 파일을 가리 키도록 정의 된 경로에서 파일 내용으로로드하고 있습니다. 그런 다음 모든 키를 얻기 위해이 작업을 수행합니다. NSArray * allmyKeys = [myDictionary allKeys]; 따라서 모든 키가로드되는 대신 문자열 만있는 키만 필요합니다. 그리고 나는 값이 string 타입 인 키만을 말해야한다고 생각합니다. 그러나 나는이 값에서 키의 이름만을 원한다. – MeisterPlans

답변

1

plist의 내용을 반복하고 [obj isKindOfClass:[NSString class]]을 사용하여 문자열 만 선택할 수 있습니다.

for(id key in [mydictionary allKeys]) 
{ 
id obj = [mydictionary objectForKey:key]; 
    if([obj isKindOfClass:[NSString class]]) 
    { 
     [myarray addObject:key]; 
    } 
} 
+0

좋아, 내가 그곳에서하려고하는 것을 보았는데 나는 그 개념을 좋아하지만 Xcode는 그 코드를 좋아하지 않는다. 다음과 같은 오류를 반환합니다. 예외 처리 예외 호출 [terminate process] [프로세스 4479 스레드 0xec03으로 전환] 현재 언어 : 자동; 현재 객관적인 - C (gdb) - 왜 그것이 그것을 좋아하지 않는지 파악하는 방법에 도움이되지 않습니다. 내 배열 NSMutableArray, 그래서 그것은 정상적인 배열 경우 개체를 추가하는 문제가 아니라는 것을 알고. – MeisterPlans

+0

obj가 실제로 키 자체의 이름이 아니라 키 값을 가져 오는 것으로 나타 났으므로이 방법은 작동하지 않습니다. 그 objectForKey : 키가 그 값을 잡는 것 같아요. – MeisterPlans

+0

명목상 모든 키는 .plist에서 문자열이 될 것입니다. 클래스가있는 키에 첨부 된 객체입니다. 그래서 당신은 문자열 인 키 (모두) 또는 문자열 인 객체를 원하십니까? –

관련 문제