2015-01-08 6 views
0

Mac OS 기반의 퀴즈 앱을 iOS로 변환하려고했습니다. 하나의 .txt 파일에서 모든 질문을로드하는 것이 좋았 기 때문입니다..txt 파일의 텍스트로드 iOS

저는 C#을 사용하기 전에 Objective-C 언어로 아직 꽤 새롭습니다.

질문과 답변이 기능을 통해로드됩니다

- (void)loadQuestionsAndAnswersArray { 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Quiz1" ofType:@"txt"]; 
    NSString *textFileString = [NSString stringWithContentsOfFile:filePath encoding:NSStringEncodingConversionAllowLossy error:NULL]; 

    NSArray *seperatedQA = [textFileString componentsSeparatedByString:@"\n\n"]; 

    for (NSString *QA in seperatedQA) { 
     NSString *questionString = [[[QA componentsSeparatedByString:@"\n"] objectAtIndex:0] stringByReplacingOccurrencesOfString:@"Q:" withString:@""]; 

     NSMutableArray *answers = [[QA componentsSeparatedByString:@"A:"] mutableCopy]; 
     [answers removeObjectAtIndex:0]; 

     int correctAnswerLoc = 0; 

     for (int i = 0; i < answers.count; i++) { 
      NSString *answer = [answers objectAtIndex:i]; 
      NSString *editedAnswer = [answer stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
      editedAnswer = [editedAnswer stringByTrimmingCharactersInSet: 
          [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
      [answers removeObjectAtIndex:i]; 
      [answers insertObject:editedAnswer atIndex:i]; 
      answer = editedAnswer; 
      if ([answer rangeOfString:@"[CORRECT]"].location != NSNotFound) { 
       correctAnswerLoc = [answers indexOfObject:answer]; 
       NSString *editedAnswer = [answer stringByReplacingOccurrencesOfString:@"[CORRECT]" withString:@""]; 
       [answers removeObjectAtIndex:i]; 
       [answers insertObject:editedAnswer atIndex:i]; 
      } 
     } 

     NSLog(@"answers = %@", answers); 

     NSDictionary *QADictionary = [NSDictionary dictionaryWithObjectsAndKeys:questionString, @"question", answers, @"answers", [NSNumber numberWithInt:correctAnswerLoc], @"correctAnswerLocation", nil]; 

     [questionsAndAnswers addObject:QADictionary]; 
    } 

    resultsArray = [[NSMutableArray alloc] initWithCapacity:[questionsAndAnswers count]]; 
} 

응용 프로그램은 다음 질문에 대한 텍스트 필드가 다음 3 개 버튼, 각 답변에 대한 하나. 새로운 질문이 나타나면 텍스트 필드 내의 텍스트와 버튼의 제목이 변경됩니다.

이 코드는 Mac App의 매력처럼 작동하지만 iOS 버전에서는 txt 파일을 찾을 수없는 것과 같이 버튼 등이 비어 있습니다.

저는 1 주일 정도이 자리에 앉아 있었는데, 그게이 게시물의 이유입니다.

iOS 앱이 Github에서 맥 응용 프로그램을 기반으로합니다 https://www.dropbox.com/s/1jqz9ue97p3v2h1/iTrafikk.zip?dl=0

: https://github.com/SquaredTiki/Quizzer

당신은 내가 여기에 응용 프로그램을 변환하는 시도했다 방법을 살펴 갖고 싶어 경우 해당에 대한 링크입니다 그리고 물론 당신이 나를 위해 모든 문제를 해결하도록 요청하지 않을 수도 있습니다, 가능하면 올바른 방향으로 저를 밀어주십시오 :)

답변

0

프로젝트를 점검했습니다. 그리고 코드에서 loadQuestionsAndAnswersArray을 호출하지 않는 것 같습니다. 또한 프로젝트의 어느 곳에서나 questionsAndAnswers을 초기화하지 않습니다.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self loadQuestionsAndAnswersArray]; 
} 

- (void)loadQuestionsAndAnswersArray 
{ 
    NSString *filePath  = [[NSBundle mainBundle] pathForResource:@"Quiz1" ofType:@"txt"]; 
    NSString *textFileString = [NSString stringWithContentsOfFile:filePath encoding:NSStringEncodingConversionAllowLossy error:NULL]; 
    NSArray *seperatedQA  = [textFileString componentsSeparatedByString:@"\n\n"]; 

    for (NSString *QA in seperatedQA) 
    { 
     NSString *questionString = [[[QA componentsSeparatedByString:@"\n"] objectAtIndex:0] stringByReplacingOccurrencesOfString:@"Q:" withString:@""]; 
     NSMutableArray *answers = [[QA componentsSeparatedByString:@"A:"] mutableCopy]; 

     [answers removeObjectAtIndex:0]; 

     int correctAnswerLoc = 0; 

     for (int i = 0; i < answers.count; i++) 
     { 
      NSString *answer  = [answers objectAtIndex:i]; 
      NSString *editedAnswer = [answer stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
      editedAnswer   = [editedAnswer stringByTrimmingCharactersInSet: 
          [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
      [answers removeObjectAtIndex:i]; 
      [answers insertObject:editedAnswer atIndex:i]; 
      answer = editedAnswer; 
      if ([answer rangeOfString:@"[CORRECT]"].location != NSNotFound) 
      { 
       correctAnswerLoc  = [answers indexOfObject:answer]; 
       NSString *editedAnswer = [answer stringByReplacingOccurrencesOfString:@"[CORRECT]" withString:@""]; 
       [answers removeObjectAtIndex:i]; 
       [answers insertObject:editedAnswer atIndex:i]; 
      } 
     } 

     NSLog(@"answers = %@", answers); 

     NSDictionary *QADictionary = [NSDictionary dictionaryWithObjectsAndKeys:questionString, @"question", answers, @"answers", [NSNumber numberWithInt:correctAnswerLoc], @"correctAnswerLocation", nil]; 
     if (!questionsAndAnswers) 
     { 
      questionsAndAnswers = [[NSMutableArray alloc] init]; 
     } 
     [questionsAndAnswers addObject:QADictionary]; 
    } 

    resultsArray = [[NSMutableArray alloc] initWithCapacity:[questionsAndAnswers count]]; 
    [self loadQuestionsAndAnswersIntoInterface]; 
} 
+0

놀라운 :

처럼 코드를 변경

! 고마워요! 정말 감사! :) 마침내 나는 내 프로젝트를 계속할 수있다. –

+0

@ user243318 : 환영합니다 :) 해피 코딩 !!! –