2012-01-13 2 views
0

"Presidents.plist"파일에 저장된 아카이브가 있습니다. 그것은 존재하고 나는 pathForResource 방법을 사용하여 찾을 수 있습니다. 또한 initWithContentsOfFile 메서드를 사용하여 NSData 데이터를 가져 와서 데이터를 가져옵니다. 문제는 이제이 코드 라인에 있습니다.NSKeyedUnarchiver decodeObjectForKey null 클래스를 반환합니다.

NSString *path = [[NSBundle mainBundle] pathForResource:@"Presidents" 
               ofType:@"plist"]; 
NSData *data; 
NSKeyedUnarchiver *unarchiver; 
data = [[NSData alloc] initWithContentsOfFile:path]; 
unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 
id presidents = [unarchiver decodeObjectForKey:@"Presidents"]; 

어떤 이유로 나는 예상되는 NSArray 클래스 대신 null 클래스를 반환합니다. 아무도 나에게 이런 일이 일어나는 이유를 말할 수 있습니까? 어떻게이 딜레마를 해결할 수 있습니까? 나는이 같은 수업을 받고 있어요

...

NSLog(@"presidents class = %@", NSStringFromClass([presidents class])); 

답변

0

당신은에 의해 개체에 액세스 할 수 있습니다

NSMutableDictionary dict = [NSKeyedUnarchiver unarchiveObjectWithFile:archieverPath]; 

archieverPath는 PLIST의 경로입니다. 는 당신은 PLIST의 루트 객체가 배열이 아니어야합니다 아이폰 OS의 최신 버전에서

return [dict objectForKey:key]; 
+0

친구를 시도! 당신은 친구의 권리가있어? 나는 이것을했다. NSMutableDictionary dict = [unarchiver decodeObjectForKey : @ "Presidents"];'그리고 그것을 로그 아웃했다. 출력은'dict = (null)'; 반면에, plist의 내용은 배열입니다. 하지만 null도 반환합니다. – jovhenni19

+0

나는 질문을 업데이트했다. 그것을 보라. 고맙습니다! – jovhenni19

0

하여 객체를 반환 할 수 있습니다. 최근에이 문제가 발생했습니다. 대신 사전을 사용해보십시오.