2016-11-08 1 views
1

Edited Code hinzufügen Start:NSArray IndexOfObject finden keine Strings mit einer Reihe

ich mit IndexOfObject ein Problem habe. Ich verwende die Benutzerauswahl aus einem Array, um Objekte aus zwei anderen Arrays auszuwählen und anzuzeigen. Ich erhalte zuerst den Index des Objekts, das sie auswählen, und verwende dann das, um den objectAtIndex von den anderen beiden Arrays zu erhalten. Ich weiß, dass das sehr grundlegende Sachen sind, und ich habe dies vorher getan, aber ich habe nie ein Problem wie dieses ...

Wenn der String im Array beginnt mit einem Buchstaben (a, b, c .. .) alles funktioniert gut. Wenn der String mit einer Zahl beginnt, kommt das indexOfObject mit einer lächerlich langen Zahl zurück und stürzt die App ab. Das Array, das die Benutzer auswählen, sind Altersgruppen. Wenn sie sich also für Frühgeborene, Neugeborene, erwachsene Frauen oder erwachsene Männer entscheiden, funktioniert alles gut. Wenn sie 1 Jahr, 2 Jahre, 4 Jahre usw. wählen, stürzt die App ab.

Dies ist mein Code (i geändert, um die Namen von Variablen und Funktionen/Methoden)

Dies ist, was aus einer separaten Tabellenansicht

- (void)ageGroupPicked:(NSString *)age { 

//Set the text for the ageGroupLabel passed from ageTableView 
ageGroupLabel.text = [NSString stringWithFormat:@"%@", age]; 

//Pass the string to the displayResults method 
[self displayResults:age]; 

}

  • zurückgegeben wird (void) displayResults: (NSString *) Anzeige {

    // Setzen Sie die Variable pAge auf den arra y Index des Typs von ageGroupArray NSInteger pAge = [self.ageGroupArray indexOfObject: display];

    // Verwenden Sie pAge, um den Text der resultsOneLabel self.resultsOneArray.text = [self.ErgebnisOneArray objectAtIndex: pAge];

    // Verwenden Sie pAge, um den Text des resultsTwoLabel self.resultsTwoLabel.text = [self.resultsTwoArray objectAtIndex: pAge];

}

Ich bin kein Vollzeit-Programmierer, so gehen Sie einfach auf mich.

+1

Das lächerlich lange Zahl wäre 'NSNotFound', das Objekt einfach bedeutet, dass Sie für Ihre Suche wurde nicht gefunden. Können Sie das Problem an einem kleinen Codebeispiel reproduzieren? (Siehe http://sscce.org für eine Anleitung.) – zoul

+0

Mein Punkt war mehr, dass indexOfObject nur funktioniert, wenn das Objekt mit einem Buchstaben beginnt. Warum sollte indexOfObject darauf achten, ob der String mit einer Zahl oder einem Buchstaben beginnt? Ich weiß, dass die Objekte im Array sind, weil ich einen NSLog eingerichtet habe, um mir zu zeigen, dass sie da sind. – jojo

+0

Es kümmert sich nicht um Buchstaben und Zahlen. Das Problem muss anderswo sein, aber es ist unmöglich zu sagen, ohne dass Sie uns mehr von Ihrem Code zeigen. – zoul

Antwort

1

Überprüfen Sie das Ergebnis Index gegen NSNotFound:

NSInteger index = [self.ageArray indexOfObject:myObject]; 
if (index == NSNotFound) { 
    //the array does not contain myObject 
} 
+0

Mein Punkt war mehr, dass indexOfObject nur funktioniert, wenn das Objekt mit einem Buchstaben beginnt. Warum sollte indexOfObject darauf achten, ob der String mit einer Zahl oder einem Buchstaben beginnt? Ich weiß, dass die Objekte im Array sind, weil ich einen NSLog eingerichtet habe, um mir zu zeigen, dass sie da sind. – jojo

+0

klingt, wired. Bitte aktualisieren Sie die Frage mit reproduzierbarem Beispielcode und/oder Protokoll der Daten. – shallowThought

+0

Markieren Sie auch Ihr Ziel-Betriebssystem (iOS/MacOS) – shallowThought

Verwandte Themen