2012-12-31 14 views
7

Ho uno NSMutableArray con 9 oggetti. Questi oggetti hanno molte proprietà, come questionName, questionWhatRow, eccModificare una proprietà per tutti gli oggetti in un NSMutableArray

voglio essere in grado di cambiare una di queste proprietà per Tutti degli oggetti nel NSMutableArray.

Ecco la mia classe NSMutableArray.

-(id) init 
{ 
    self = [super init]; 

    if (self) 
    { 
     self.questionsArray = [[NSMutableArray alloc] init]; 

     Question *newQuestion = [[Question alloc] init]; 
     newQuestion.questionName = @"What is the name of the girl who has to fetch water for her family every day?"; 
     newQuestion.questionRowName = @"Question 1"; 
     newQuestion.questionAnswer = @"Nya"; 
     newQuestion.questionHint = @"Maybe if you read the book you would know"; 
     newQuestion.questionWhatRow = @"Nya"; 
     newQuestion.questionCompleteOrNot = @"No"; 
     newQuestion.pointForQuestion = 1; 
     [self.questionsArray addObject:newQuestion]; 

     newQuestion = [[Question alloc] init]; 
     newQuestion.questionName = @"What is Nya's sister's name?"; 
     newQuestion.questionRowName = @"Question 2"; 
     newQuestion.questionAnswer = @"Akeer"; 
     newQuestion.questionHint = @"Maybe if you read the book you would know"; 
     newQuestion.questionWhatRow = @"Nya"; 
     newQuestion.questionCompleteOrNot = @"No"; 
     newQuestion.pointForQuestion = 1; 
     [self.questionsArray addObject:newQuestion]; 

     newQuestion = [[Question alloc] init]; 
     newQuestion.questionName = @"What people is Nya's mother scared of when her father and sons go hunting?"; 
     newQuestion.questionRowName = @"Question 3"; 
     newQuestion.questionAnswer = @"Dinka"; 
     newQuestion.questionHint = @"Maybe if you read the book you would know"; 
     newQuestion.questionWhatRow = @"Nya"; 
     newQuestion.questionCompleteOrNot = @"No"; 
     newQuestion.pointForQuestion = 1; 
     [self.questionsArray addObject:newQuestion]; 

     newQuestion = [[Question alloc] init]; 
     newQuestion.questionName = @"What is Salva scared of when he is in the Akobo desert?"; 
     newQuestion.questionRowName = @"Question 4"; 
     newQuestion.questionAnswer = @"Lions"; 
     newQuestion.questionHint = @"He is scared of an animal because it ate his friend Marial"; 


     newQuestion = nil; 

    } 

    return self; 
} 

-(NSUInteger)count 
{ 
    return questionsArray.count; 
} 


- (Question *)questionAtIndex:(NSUInteger)index 
{ 
    return [questionsArray objectAtIndex:index]; 
} 

Ora, ho un'altra classe chiamata ScoreViewController, e voglio essere in grado di modificare la proprietà, questionCompleteOrNot del NSMutableArrayquestionsArray per tutti gli oggetti/le domande di @"No".

mio ScoreView ha un pulsante di reset, ma non so cosa mettere in esso per cambiare tuttequestionCompleteOrNot proprietà del questionsArray-@"No".

Scusate per la lunga domanda, stavo cercando di essere molto specifico.

Modifica

Ecco il mio DetailView per un TableView.

if ([[selectedQuestion questionCompleteOrNot] isEqualToString:@"No"]) 
    { 
     if ([[selectedQuestion questionAnswer] caseInsensitiveCompare:answerField.text] == NSOrderedSame) 
     { 
      // Show the correct label 
      [correctLabel setHidden:NO]; 
      correctLabel.text = @"Correct!"; 
      correctLabel.textColor = [UIColor greenColor]; 

     } 
     else 
     { 
      // Show the incorrect label 
      [correctLabel setHidden:NO]; 
      correctLabel.text = @"Incorrect"; 
      correctLabel.textColor = [UIColor redColor]; 
      [incorrectPlayer play]; 
      [[selectedQuestion questionCompleteOrNot] isEqualToString:@"Yes"]; 

     } 

     // Erase the text in the answerField 
     answerField.text = @""; 
    } 
    if ([[selectedQuestion questionCompleteOrNot] isEqualToString:@"Yes"]) 
    { 
     UIAlertView *error = [[UIAlertView alloc] 
           initWithTitle:@"Error" 
           message:@"You already answered this question. Please click the reset button on the score view to restart." 
           delegate:self 
           cancelButtonTitle:@"Okay!" 
           otherButtonTitles:nil]; 

     [error show]; 
     answerField.text = @""; 
    } 

    selectedQuestion.questionCompleteOrNot = @"Yes"; 
    correctLabel.text = @""; 
    NSLog(@"Selected question's questionCompleteOrNot is %@", [selectedQuestion questionCompleteOrNot]); 

risposta

10

È possibile utilizzare NSArray s' makeObjectsPerformSelector:withObject:, in questo modo:

[questionsArray makeObjectsPerformSelector:@selector(setQuestionCompleteOrNot:) withObject:@"No"]; 
+0

ho fatto nel mio ScoreView, QuestionList * ql = [[QuestionList alloc] init]; [ql.questionsArray makeObjectsPerformSelector: @selector (setQuestionCompleteOrNot :) withObject: @ "No"] ;, ma non funziona ancora – jakife

+0

Definire "non funziona". Che succede? Cosa stai cercando di fare? In che modo la tua classe QuestionList è connessa alla tua classe ScoreView? Ho bisogno di più informazioni per determinare cosa c'è che non va. La mia risposta dovrebbe funzionare per qualsiasi NSMutableArray, quindi mi sembra che il tuo problema sia una domanda completamente diversa. –

+0

Ho una vista completamente diversa, scoreView. La mia altra vista, lista delle domande, ha un NSMutableArray. Ho dovuto localmente ottenere QuestionList per acsess l'array. Voglio impostare ** tutte ** le proprietà questionCompleteOrNot su tutti gli oggetti per essere No. Non sembra farlo perché, quando la mia altra vista, di cui ho dimenticato di scrivere il codice, che farò in un secondo, acsesses quella proprietà per vedere se è no e fa qualcosa. Qui, lo posterò nella domanda. ** Modifica: appena aggiornato. ** – jakife