NSInvalidArgumentException: "Unbekannter Selektor wurde an Instanz gesendet"

8

Ich stehe vor einem Problem, dass ich den Grund nicht wirklich verstehe. Die Ausnahme gibt mir keine Ahnung, um das Problem zu verstehen.

Ich möchte den Inhalt von UILabel an meiner Schnittstelle gemäß den in myArray angegebenen Daten ändern. Wie die Zeile, die ich in der Funktion "cellForRowAtIndexPath" angegeben habe, löst das Programm jedoch eine Ausnahme aus.

Was ist der Grund für dieses Problem?

%Vor%

Der Fehler:

%Vor%     
ankakusu 09.12.2013, 09:44
quelle

4 Antworten

20

Anstatt Ihnen zu sagen, was Sie ändern sollten, gebe ich Ihnen einige Hinweise, damit Sie Ihre Probleme hoffentlich in Zukunft leichter lösen können.

Zuerst ist die Fehlermeldung, die Sie haben,

%Vor%

Die Ausnahmebedingungsnachricht ist hier der Schlüsselpunkt

%Vor%

Wenn Sie mithilfe der Suchmaschine Ihrer Wahl nach dieser Nachricht suchen, sehen Sie, dass Sie eine Methode für ein Objekt aufrufen, das nicht auf diese Methode reagiert. Die Fehlermeldung teilt Ihnen außerdem die Methode mit, die Sie aufrufen möchten, und auf welche Art von Objekt Sie es aufrufen.

%Vor%

Wenn Sie sich die Dokumentation für das NSArray -Objekt ansehen, werden Sie sehen, dass keine objectForKey -Methode dafür verfügbar ist.

Was Sie jetzt tun sollten, ist einen Breakpoint in Ihrem Code zu setzen (wenn Sie nichts über Breakpoints wissen, gehen Sie los und lesen Sie über sie - sie sind wichtig für das Debuggen) und durchlaufen Sie, bis Sie die Zeile treffen, die wirft Ausnahme. An diesem Punkt können Sie die Objekte überprüfen, die Sie haben, und sehen, was die Typen sind. Sie sollten dann in der Lage sein herauszufinden, was Sie mit der Codierung tun sollten.

    
Nick Bull 09.12.2013 11:03
quelle
2

[__ NSCFArray objectForKey:]: nicht erkannter Selektor, der an die Instanz 0x1459d1f0 '

gesendet wurde

Sie können objectForKey nicht für NSMutableArray aufrufen Vielleicht sollten Sie NSDictionary verwenden, wenn Sie objectForKey verwenden müssen: oder Sie können Array von Arrays verwenden zB:

%Vor%

Nun, wenn Sie einige Felder Wert abrufen müssen, dann rufen Sie einfach den Index im Array

%Vor%

Hoffe, das wird helfen:)

Bearbeiten: Wenn Sie NSDictionary verwenden müssen

%Vor%     
Iphone User 09.12.2013 10:53
quelle
0
  

Die Ausnahme gibt mir keine Ahnung, um das Problem zu verstehen.

Ich stimme nicht zu, die Ausnahme sagt Ihnen genau, was Sie falsch gemacht haben. Es teilt Ihnen mit, dass Sie objectForKey: an ein Array anstatt an ein Wörterbuch gesendet haben. Die einzige Zeile, in der ich dich mit objectForKey: sehe, ist diese.

%Vor%

was bedeutet, dass [self.myArray objectAtIndex:indexPath.row] ein Array ist, kein Wörterbuch. Ich weiß nicht, wie das passiert ist, denn nirgendwo in deinem Code, den du uns zeigst, gibt es irgendetwas, das self.myArray ein Objekt hinzufügt. Insbesondere gilt dies nicht:

%Vor%

Es sollte

sagen %Vor%

Ich vermute, dass das nur ein Kopierfehler war, weil Sie auch das Semikolon vergessen haben. Beachten Sie, dass ein Unterstrich an der Vorderseite von myArray nicht gut ist, weil Sie sich darauf verlassen, dass der Accessor das Array initialisiert.

    
JeremyP 09.12.2013 11:09
quelle
0

Wenn Sie NSDictionary oder NSMutableDictionary auf Array speichern, funktioniert der Code für Sie. Wenn Sie NSDictionary zum Array hinzufügen möchten, sollten Sie Folgendes verwenden: [[NSDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil]

    
Abdullah Md. Zubair 09.12.2013 11:10
quelle

Tags und Links