2012-08-23 3 views
1

질문 및 답변 데이터를 저장하는 데 사용하는 속성 목록 파일이 있습니다. 이 파일에는 배열 모음이 있으며,이 범주에는 서로 다른 범주와 질문이 저장되어 있습니다. 그러나이 데이터에 액세스 할 수없는 것 같습니다.Plist 배열/노드 액세스 - 목표 C

속성 파일.

<?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>Category1</key> 
<array> 
    <array> 
     <string>Question1</string> 
     <string>Answer1</string> 
    </array> 
    <array> 
     <string>Question2</string> 
     <string>Answer2</string> 
    </array> 
    <array> 
     <string>Question3</string> 
     <string>Answer3</string> 
    </array> 
    <array> 
     <string>Question4</string> 
     <string>Answer4</string> 
    </array> 
</array> 
</dict> 
</plist> 

아래는 두 개의 간단한 버튼을 사용하여 속성 목록 파일에 액세스하는 방법입니다.

-(IBAction)nextleft { 
    [self bingsound]; 
    if (questionCounter > 1) { 
     questionCounter -= 1; 
    } 
    [self nextQuestion]; 
} 

-(IBAction)nextright { 
    [self bingsound]; 
    if (questionCounter < 20) { 
     questionCounter += 1; 
    } 
    [self nextQuestion]; 
} 

-(void)nextQuestion { 
    NSArray *pair; 
    pair = [categories objectAtIndex:questionCounter]; 
    plistQuestion = [pair objectAtIndex:0]; 
    plistAnswer = [pair objectAtIndex:1]; 
    abbreviation.text = plistQuestion; 
} 

다음과 같이 카테고리 배열을 채우고 있습니다.

categories = [NSArray arrayWithContentsOfFile:@"questions.plist"]; 
+0

텍스트 편집기에서 속성 목록을 열고 오프닝 라인을 게시 할 수 있습니까? 그 스크린 샷은 제대로 보이지 않습니다. 첫 번째 항목은 일반적으로 plist 편집기를 통해 편집 할 수없는 "루트"라고해야합니다. 잘못된 속성 목록이나 사전을 루트 객체로 가져 왔습니다. 디버거에서 카테고리 배열이 초기화 된 것을 확인하십시오. – jrturton

+0

이제 당신이 살펴볼 수 있도록 추가되었습니다. – Kolors

답변

1

속성 목록에는 배열이 아닌 루트 개체로 된 사전이 있습니다.

상단에서이 줄 제거, 또한

</dict> 

무라트의 조언 @ 따라 일반 대신 파일에 올바른 경로를 도출 :

<dict> 
<key>Category1</key> 

그리고 끝에서이 줄을 끈.

일반적으로 이와 같은 문제로 인해 디버거는 친구입니다. 메소드에 중단 점을 넣고 나가는 값을 각 스테이지에서 확인하십시오 (경로 추출, 배열 추출).

+0

도움을 주셔서 감사합니다. 제가 생각하기에 간단한 수정과 몇 가지 문제를 다림질 한 후에 치료를했습니다. 감사! – Kolors

+1

별도의 질문을해야합니다. – jrturton

1

plist 파일의 전체 경로와 함께 arrayWithContentsOfFile:을 제공해야합니다. 다음은 작동해야합니다 :

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"questions" ofType:@"plist"]; 
categories = [NSArray arrayWithContentsOfFile:filePath]; 
+0

도움을 주셔서 감사합니다! – Kolors