Vergleiche mit Null in Ziel c

8

Ich fange an zu finden, dass mein Code übersät ist mit:

%Vor%

Gibt es einen kürzeren (zeichenweisen) Vergleich für NULL?

Hintergrund: Ich verwende die SBJson-Bibliothek, um eine JSON-Zeichenfolge zu analysieren, und für einige der Schlüssel gibt es oft Nullwerte (nach Entwurf).

    
Adam 07.06.2013, 17:07
quelle

7 Antworten

7

Nichts eingebaut, aber es wäre vernünftig und einfach, eine Funktion MYIsNull() zu erstellen, die den von Ihnen gewünschten Vergleich durchführt. Denken Sie einfach darüber nach, was Sie zurückgeben möchten, falls der Schlüssel fehlt.

Vielleicht möchten Sie den anderen Weg gehen und -null in nil umwandeln. Zum Beispiel könnten Sie eine Kategorie in NSDictionary wie folgt hinzufügen:

%Vor%     
Rob Napier 07.06.2013, 17:18
quelle
4

Ich würde

verwenden %Vor%

Es scheint zu funktionieren, da [NSNull null] tatsächlich ein "Objekt" ist. Hoffe es hilft!

    
Groot 07.06.2013 17:18
quelle
3

Nein, Sie müssen auf NSNull testen. Wenn Sie jedoch feststellen, dass Ihr Code davon verunreinigt ist, möchten Sie möglicherweise einen #define dafür erstellen.

Beachten Sie auch, dass, wenn p gleich null ist oder wenn p keinen Wert für someKey hat, [p objectForKey@"somekey"] != [NSNull null] auf YES auswertet.

Sie wollen wahrscheinlich so etwas:

%Vor%     
Simon 07.06.2013 17:24
quelle
1
  

Gibt es einen kürzeren (zeichenweisen) Vergleich für NULL?

[NSNull null] ist 13 Zeichen. Sie können sagen:

%Vor%

Oder machen Sie eine Funktion:

%Vor%

Oder (wirbelt) benutzt eine Kategorie:

%Vor%

Seien Sie vorsichtig, wie Sie diese Kategorie benennen, wenn Sie mit nil receivern umgehen.

    
justin 07.06.2013 18:42
quelle
0

Da Sie SBJSON verwenden, können Sie den Code einfach ändern - Sie haben die Quelle.

Ich habe tatsächlich SBJSON Parser geändert, um [NSNull null] Werte zu überspringen. Sie werden nicht zu den Wörterbüchern hinzugefügt und wenn ich objectForKey: anrufe, bekomme ich nie [NSNull null] , ich bekomme nur nil . Dann muss ich in den meisten Fällen nicht einmal prüfen, ob der Wert nil ist, da das Aufrufen einer Methode auf nil normalerweise das erwartete Ergebnis liefert.

    
Sulthan 08.06.2013 15:11
quelle
0

Wenn Sie sich nur Gedanken darüber machen, wie viel Zeit Sie beim Schreiben brauchen, sollten Sie Makros in Betracht ziehen:

%Vor%

dann

%Vor%     
James Webster 08.06.2013 15:41
quelle
-4

Ziemlich sicher können Sie einfach sagen

%Vor%

Ich benutze NSNull nicht sehr, also bin ich mir nicht 100% ig sicher, aber ich denke, es wird als falsch getestet und alle anderen Objekttests als wahr.

    
morningstar 07.06.2013 17:11
quelle

Tags und Links