2012-06-18 2 views
0

Я создаю simle вопрос-ответ iPhone приложение.NSMutableArray не получает инициализацию в методе initWithNibName

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    // Call the init method implemented by the superclass 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Create two arrays and make the pointers point to them 
     questions = [[NSMutableArray alloc] init]; 
     answers = [[NSMutableArray alloc] init]; 
     // Add questions and answers to the arrays 
     [questions addObject:@"What is 7 + 7?"]; 
     [answers addObject:@"14"]; 
     [questions addObject:@"What is the capital of Vermont?"]; 
     [answers addObject:@"Montpelier"]; 
     [questions addObject:@"From what is cognac made?"]; 
     [answers addObject:@"Grapes"]; 
    } 

массивов на вопросы & ответов не наполняясь и показывать ноль. В чем может быть проблема?

массив Метод доступа:

- (IBAction)showQuestion:(id)sender 
{ 
// Step to the next question 
currentQuestionIndex++; 
// Am I past the last question? 
if (currentQuestionIndex == [questions count]) { 
    // Go back to the first question 
    currentQuestionIndex = 0; 
} 

// Get the string at that index in the questions array 
NSString *question = [questions objectAtIndex:currentQuestionIndex]; **<<- question is nil** 


[questionField setText:question]; 

// Clear the answer field 
[answerField setText:@"???"]; 
} 
+0

Где вы храните ваши вопросы и ответы в массивах? Не могли бы вы вставить код, который вы используете для этого? – Tim

+0

в заголовочном файле: '@interface QuizViewController: UIViewController {int currentQuestionIndex; // Объекты модели NSMutableArray *; NSMutableArray * ответы; // Объекты представления - не беспокойтесь о IBOutlet - // мы поговорим об этом вскоре IBOutlet UILabel * questionField; IBOutlet UILabel * replyField; } ' – ExploringApple

+0

попытайтесь установить точку останова в методе -initWithNibName. Посмотри, добирается ли он туда. Я предполагаю, что вы не инициализируете ViewController этим методом, может быть, просто с помощью -init. –

ответ

0

Ваш ответ должен инициировать свои NSMUtableArrays следующим образом:

questions = [[NSMutableArray alloc] initWithCapacity:1]; 

UPDATE: Если код не достигает внутри IF условие, это очень странная ситуация. Я предлагаю вам удалить ваш текущий XIB и переделать новый с нуля. Иногда такие странные ошибки решаются путем воссоздания XIB.

+0

Здесь проблема заключается в том, что управление не происходит внутри цикла if, а некоторые - как «я» получает нуль. Пока я отлаживаю его, сам элемент управления не входит в функцию initWithNibName. Что может быть причиной? Если я возьму вышеуказанный код и сохраню в другой функции, такой как ShowQuestion, массив будет правильно заполняться. – ExploringApple

+0

Он также работает с [[NSMutableArray alloc] init], это не проблема, я думаю. – Tim

+0

@ Тим, да, это не проблема. Фактическая проблема заключается либо в том, что элемент управления не идет в initWithNibName, либо он находится внутри, но не в состоянии if. (Точка останова не попадает в функцию initWithNibName) – ExploringApple

Смежные вопросы