2009-09-10 7 views
0

이것은 PLIST 원시 모습입니다 :수 .plist 사전 항목 (아이폰 OS SDK)

나는 PLIST의 전체 항목을 계산하고, 그들처럼 표시 할
{ 
    authorLastName = Doe; 
    authorFirstName = Jane; 
    imageFilePath = "NoImage.png"; 
    title = "Account Test 1"; 
    year = 2009; 
}, 
{ 
    authorLastName = Doe; 
    authorFirstName = John; 
    imageFilePath = "NoImage.png"; 
    title = "Account Test 2"; 
    year = 2009; 
}, 

: '4 개 계정'.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *myPlistPath = [documentsDirectory 
         stringByAppendingPathComponent:@"Accounts.plist"]; 
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:myPlistPath]; 

NSArray *array = [[plistDict objectForKey:0] 
         sortedArrayUsingSelector:@selector(compare:)]; 

return([NSString stringWithFormat:@"%d Accounts", [array count]]); 

그러나 결과는 0을 반환합니다. 사전에있는 항목의 개수를 반환하고 싶습니다.

+1

키가 될 수 있습니까? 대신 해당 objectAtIndex 아닌가요? – Garrett

+1

0은 키가 될 수 없으므로 [plistDict objectForKey : 0]은 nil을 반환하므로 모든 메시지가 nil로 반환됩니다. 따라서 배열은 nil이고 [배열 개수]도 0입니다. – Amok

+1

pList에서 ROOT 아래에있는 사전의 수를 계산하려고합니다. 예를 들어 루트 아래에서 항목 1과 항목 2가 항목 1 아래에 5 개의 문자열, 이름, 성, 별명, 번호, 이미지가 있습니다. 얼마나 많은 항목이 있는지 계산하고 Tableview에 표시하기 만하면됩니다. – WrightsCS

답변

0

읽기 전용 형식으로 지원되는 이전 OpenStep 속성 목록 인 것으로 보입니다.

코드는 괜찮습니다. 단, NSDictionary은 개체를 키로 사용하기 때문에 "[plistDict objectForKey:0]"은 예상대로 수행되지 않습니다. 속성 목록의 최상위 수준이 배열임을 알고있는 경우 NSDictionary 대신 NSArray에 할당하십시오. 실제로 사전 인 경우 키가 0이 아닌 문자열 값을 사용하십시오.

1

return 문은 사전 자체의 항목 수가 아닌 사전의 첫 번째 요소에있는 항목 수를 중계합니다.

return [NSString stringWithFormat:@"%d Accounts", [plistDict count]]; 
0

무엇 [plistDict count]에 대한 대신 나는 당신이 원하는 것은 무엇인가 무슨 생각? 사전에 열쇠로 0을 전달하기 때문에 nil을 키 또는 값으로 사용할 수 없으므로 아무 것도 반환하지 않습니다.