2012-02-25 5 views
0

여기 내 문제가 있습니다. 나는 myPlist라는 PLIST을 가지고 있고 그것은 다음과 같습니다XCode : plist에서 NSmutablearray로 데이터 읽기

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
<plist version="1.0">  
<dict>  
<key>1</key>  
<array>  
<string>Dog</string>  
<string> empty </string>  
<true/>  
</array>  
<key>2</key>  
<array>  
<string>Car</string>  
<string> empty </string>  
<false/>  
</array>  
<key>3</key>  
<array>  
<string>Table</string>  
<string> empty </string>  
<true/>  
</array> 
</dict>  

는 각 키에 대한 세 가지 값이 있습니다. 두 개는 문자열이고 한 개는 부울입니다. 나는 평범한 방법으로 nsmutablearray를 plist로 채워서 tableview에 표시 할 수 있었지만 NSMutableArray는 항상 비어있었습니다. 나는 이것을 먼저 시도했다 :

NSMutableArray *mutable = [[NSArray arrayWithContentsOfFile: 
      [[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"]] retain]; 

나는 또한 시도했지만 여전히 0 개체를 반환한다.

NSString *path = [[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"]; 

     NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 

     NSArray *mutable = [NSArray arrayWithArray:[dict objectForKey:@"Root"]]; 

난 항상 사전과 같은 PLIST를 사용하고이 구조의이 종류 그래서 내가 뭔가 잘못하고 있다고 생각 내 첫 번째입니다. Btw 내가 내가 멍청하다고 말 했니? :)

도와주세요.

NSDictionary *dogObject = [dict objectForKey:@"1"]; 

그러나이 어떻게 그래서 나중에 데이터를 편집 할 수있는있는 NSMutableArray로 데이터를 전송할 수 있습니다 : 롭에

편집 덕분에, 지금이 라인을 사용하여 데이터를 읽을 수 있습니까? 또는 사전을 사용하여 편집 된 데이터를 저장할 수 있습니까?

+0

올바른 경로를 얻고 있습니까? NSLog 경로 개체. –

+0

'arrayWithContentsOfFile :'해야합니다. 사용중인 경로가 맞습니까? 그것을 검사 할 수 있도록 NSLog로 인쇄 해보십시오. 또는 경로에 대해 별도의 NSString ivar을 선언하고 코드에서 직접 볼 수 있도록 중단 점을 설정하십시오. – Wienke

+0

예, 경로가 정확합니다. 나는 확인했다. ... – iPhoneNoob

답변

1

최상위 레벨 plist 태그의 끝 태그가 없습니다. 복사/붙여 넣기 오류라고 가정합니다.

마지막에 누락 된 </plist>을 추가하면 이것이 유효한 속성 목록입니다. 최상위 사전이 포함되어 있으므로 (또는 NSMutableArray)이 아닌 NSDictionary에로드해야합니다.

최상위 사전에 Root 키가 없습니다. 여기에는 1, 23의 세 키가 포함되어 있습니다. 그래서 다음과 같이 객체를 얻을 수 있습니다 :

NSDictionary *dogObject = [dict objectForKey:@"1"]; 
+0

실제로, 나는 사람을 얻었다. 내가 복사/붙여 넣기를 할 때 나는 그것을 놓쳤다 ... – iPhoneNoob

+0

당신은 당신의 코드 샘플을 가지고 있었다. 나는 지금 count = 3을 얻는다! 이제 배열의 모든 것을로드 할 수있어서 그 수를 볼 수 있습니까? – iPhoneNoob

+1

사전 요소를 반복하고 각각을 NSMutableArray에 추가하십시오. –