Ich möchte bool Literale wie
verwenden %Vor%Wenn ich das versuche, will XCode, dass ich NSNumber-Methoden zum Vergleich verwende, wie isEqualTo. Gibt es einen einfacheren Weg (ohne isEqualTo)? Wenn ich nicht kann, sollte ich isEqualTo, isEqualToValue oder isEqualToNumber verwenden?
Was ist condition
? Ist es ein BOOL
oder ein NSNumber
?
Wenn condition
ein BOOL
ist, dann möchten Sie @NO
oder @YES
überhaupt nicht verwenden. Du willst sagen
Beachten Sie, dass Sie niemals
sagen sollten %Vor% weil BOOL
nicht wirklich auf 0
und 1
als Werte beschränkt ist, kann es alles in char
enthalten, wenn also condition
versehentlich hält, sagen wir, 3
, dann if (condition)
und if (condition == YES)
würde sich anders verhalten.
Wenn condition
ein NSNumber
ist, dann möchten Sie immer noch @NO
und @YES
nicht verwenden. Sie möchten es nur in BOOL
mit -boolValue
konvertieren, wie in
Der Grund hier ist, verwenden Sie nicht @NO
und @YES
Literale für Vergleiche. Es ist sinnlos und unelegant, da alles, was du damit machen kannst, ist, sie in BOOL
s umzuwandeln.
Angenommen, der Datentyp von condition
ist BOOL
, dann möchten Sie:
Wenn die Bedingung NSNumber
lautet, verwenden Sie:
Wenn condition
auf einigen beliebigen Zahlen basiert, dann behandle 0
als NO
und behandle nicht-null als YES
.
Auch wenn condition
ein NSNumber
ist, dann tue:
Aktualisieren : Basierend auf dem folgenden Kommentar des OP:
Bedingung ist ein bool, wie if (myView.frame.size.height == 30)
Dies bedeutet, dass die eigentliche Frage etwas überprüfen sollte:
%Vor%Das ist sehr ungewöhnlich. Das Richtige ist:
%Vor%Sie müssen sich keine Sorgen über falsche Positive oder Negative machen. Die Bedingung ist entweder wahr oder nicht. Es gibt keine dritte Möglichkeit. Wenn die Bedingung das falsche Ergebnis ergibt, besteht die Lösung darin, die Bedingung zu beheben.
Sie können @YES.boolValue
und @NO.boolValue
verwenden.
Also, um mit Bool Literal zu vergleichen, können Sie etwas wie (angesichts der Tatsache, dass condition
ist BOOL
)
Tags und Links objective-c ios comparison boolean