[NSNull isEqualToString:]

8

Ich versuche, eine Zeichenkette auf "No Display name" zu setzen, wenn [object objectForKey @ "display_name"] NULL ist. Es stürzt damit im Log ab

%Vor% %Vor%     
Sam Baumgarten 16.06.2011, 18:04
quelle

6 Antworten

41

Ein Cast ändert kein Objekt class (type).

Sie müssen den Fall verwalten, wenn Ihr Wert [NSNull null] ist, etwa wie folgt:

%Vor%     
Vincent Guerci 16.06.2011, 18:11
quelle
5

Ich habe eine Kategorie auf NSNull erstellt, funktioniert gut für mich:

%Vor%     
Jerry Horton 06.01.2013 20:20
quelle
3

Sie möchten vielleicht so etwas:

%Vor%

Und in Ihrer Frage, sollte es nicht lesen "wenn es NULL ist", sondern "wenn es eine NSNull Instanz ist".

    
André Morujão 16.06.2011 18:14
quelle
2

Ich werde meine Antwort einwerfen, um etwas zu verdeutlichen. Das Problem besteht darin, dass das Objekt im NSDictionary den Wert [NSNull null] hat (etwas anders als NULL und NULL). Das Problem kommt von einigen Bibliotheken (ein bestimmter JSON-Parser kommt mir in den Sinn), den Wert für einige Schlüssel mit NULL-Wert auf [NSNull null] setzen. Warum? Weil es manchmal erforderlich ist, in einem NSDictionary den Fall zu unterscheiden, wenn ein Schlüssel nicht vorhanden ist, wenn der Schlüssel einen NULL-Wert hat. In einem NSDictionary gibt es keine Möglichkeit zu sagen, aber JSON-Strukturen vermitteln solche Unterschiede. Wenn Sie eine a-Variable erhalten, die von einer Bibliothek oder einem Parser kommt, der dies tut, kann der Wert [NSNull null] sein. NSNull ist ein Singleton, also genügt es, nur nach Gleichheit zu suchen (Zeigergleichheit). Zum Beispiel würde ich tun:

%Vor%     
fsaint 16.06.2011 18:52
quelle
0

Ermitteln Sie, ob das Objekt null ist oder nicht, anstatt zu versuchen, aus dem Klassennamen zu folgern.

%Vor%

Ich habe das zweite Argument nicht getestet, aber lesen Sie hier mehr über das Testen von null .

    
Rob 16.06.2011 18:16
quelle
0

Ich löste das, indem ich eine Überprüfung gegen [NSNull null] durchführte. Der Code, den ich in meiner App verwendet habe:

%Vor%

Allerdings hat XCode einige Warnungen ausgegeben, um diejenigen, die ich an einen NSObject * Typ geworfen habe, loszuwerden:

%Vor%     
SteveA 01.09.2013 10:57
quelle

Tags und Links