2011-03-03 9 views
0

객관식 테스트 iPhone 앱을 개발하도록 요청 받았습니다. 이 테스트에는 6 개의 카테고리가 있으며, 각 카테고리에는 25-30 개의 질문이있을 수 있습니다. 사용자는 카테고리를 선택한 다음 한 번에 하나씩 질문을 제시합니다. 각 질문에는 4 가지 가능한 대답이 포함됩니다. 사용자가 잘못된 것을 선택하면 간단한 설명이 제공됩니다. 나는 선생님이 택한 객관식 테스트의 표준 유형처럼 보이는 워드 문서 (텍스트 문서 또는 pdf가 될 수 있음)를 사용하고 있습니다. 질의 응답을 읽고, 분석하고 표시하는 방법에 관한 조언이 있습니까? 다양한 가이드, 방법, 샘플 코드 등을 통해 읽으십시오. 적어도 완료하는 법은 분명하지 않습니다. 나는 여러분 모두에게 이것이 내가 새로운 것이라고 확신합니다. 어떤 제안이라도 대단히 감사하겠습니다.iOS 파일 구문 분석

답변

2

여기 몇 가지 가정을 만들고 있어요 : 질문이 정기적으로 변화가 예상되지

  • .
  • 질문을 편집해야하는 유일한 사람은 귀하입니다.
  • 디자인/레이아웃이 질문에서 질문으로 변경되지 않았습니다.

이러한 가정을 감안할 때 plist를 사용하는 것이 아마도 질문을 저장하는 가장 좋은 방법 일 것입니다.

프로젝트에 새 파일을 추가 하시려면 Mac OS X > Resource 아래에 Property List이 있습니다. OS X 및 iOS 속성 목록이 동일하므로 걱정하지 마십시오.

이 파일을 열 때, 당신은 당신이 당신의 정확한 형식이 응용 프로그램에 따라 다릅니다 등 배열, 사전, 문자열 값을 생성 할 수 있음을 볼 수 있지만, 대략 말할 것이다 :

  • 귀하의 최상위 객체 것이다 범주 배열
  • 범주는 제목 문자열과 질문 배열을 포함하는 사전입니다.
  • 귀하의 질문은 질문, 힌트 및 가능한 답변 배열을 포함하는 사전이 될 것입니다.
  • 답변은 텍스트가 포함 된 사전 및 옳은지 여부에 관계없이 사전에 포함됩니다.

여기에서, 당신은 다음과 같은 것을 사용하여 모든 데이터를로드 할 수

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

categories 개체가 정상적인 배열하고 PLIST의 내용을 반영합니다.예를 들어, 카테고리를 통해 반복하고 이름을 기록 그래서, 당신은 할 줄 :

for (NSDictionary *category in categories) { 
    NSLog(@"%@", [category objectForKey:@"Title"]); 
} 

당신이 당신이 당신의 사용자 인터페이스 작업 할 정확히 방법에 따라 달라집니다,하지만 UINavigationController 아마 인 사용에서 갈 경우 당신이 완전히 붙어 있다면 좋은 출발.

+0

감사합니다. 짐. 당신은 가정이 맞습니다. 그것은 정말로 읽기 전용 파일입니다. 당신은 나에게 바른 방향으로 가상 충격을 주었다! – Namhcir

0

xml 파일로 작업하는 것이 옵션 일 경우, 대신에 좋은 구문을 제공하는 yaml을 살펴볼 수도 있습니다. 보다 힘든 대안은 고객이 질문을 제출 한 다음 거기에서 직접 XML을 생성하는 웹 응용 프로그램을 설정하는 것입니다. 귀하의 질문은 여기에

뭐죠