NSArray Fehler: NSCFArray objectAtIndex index (5) beyond bounds (5)
Ich habe eine MutableArray gefüllt mit Werten aus einer Datenbank:
NSMutableArray *objectsArray = [[NSMutableArray alloc] init];
for (int n=0; n<[self.array count]; n++) {
[objectsArray addObject:[[self.array objectAtIndex:n] objectForKey:@"Name"]];
[objectsArray addObject:[[self.array objectAtIndex:n] objectForKey:@"Name_En"]];
}
Zeige ich die Werte auf den Etiketten so auf:
cell.textLabel.text = [[[dic objectForKey:@"d"] objectAtIndex:indexPath.row] objectForKey:@"Name"];
cell.detailTextLabel.text = [[[dic objectForKey:@"d"] objectAtIndex:indexPath.row] objectForKey:@"Name_En"];
So weit, die app funktioniert gut. Es beginnt, ohne eine Ausnahme zu werfen und die Werte in den labels. Aber wenn ich anfange zu scrollen, die app stürzt ab und ich bekomme die folgende Fehlermeldung:
Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (5) beyond bounds (5)'
Warum dieser Fehler Auftritt?
InformationsquelleAutor Bashud | 2012-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich zu sagen, die Tabelle, die Sie haben 6 Zeilen, aber Sie haben tatsächlich 5. Der Grund für diese Ausnahme ist, dass die Tabelle-Ansicht fragt Zelle für
indexPath.row
mit dem Wert 5, was bedeutet, dass es denkt, dass es 6 [0:5] Zeilen, aber dein array in das Wörterbuch hat 5 Positionen [0:5).Blick auf die Methode
–tableView:numberOfRowsInSection:
dort müssen Sie mit return die Anzahl der Elemente im array.ich kehre es so - - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [objectsArray count]; }
[objectsArray count] gibt an, wie viele Objekte haben Sie in dem Wörterbuch, nicht wie viele Objekte hat jedes array für die Schlüssel im dictionary. Warum Sie aus dem Lexikon mit arrays drin?
Ich habe einen webservice, die Rückgabe von JSON-Daten, so dass ich die Werte in ein dictionary. Wie kann ich zählen, jedem einzelnen array-für jeden Schlüssel im dictionary?
InformationsquelleAutor graver
Ich Stand vor dem gleichen problem, das Sie erwähnen, früher.
Dann habe ich diese :-
Es ist in Ordnung, und logisch korrekt auch(denke ich) 🙂
Hoffe, dies wird Ihnen helfen.
InformationsquelleAutor iOSBeginner
Ich Stand vor dem gleichen problem und ich hab die Lösung:
NSMutableArray *objectsArray = [[NSMutableArray alloc] init];
InformationsquelleAutor Rushikesh Rathod