der Datentyp condition
Unter der Annahme BOOL
, dann möchten Sie:
if (condition) {
// true (YES)
} else {
// false (NO)
}
Wenn die Bedingung ein NSNumber
ist dann verwenden:
if ([condition boolValue]) {
// true (YES)
} else {
// false (NO)
}
Wenn condition
auf einige beliebige Zahlen basieren dann 0
behandeln als NO
und behandle nicht Null als YES
.
Auch wenn condition
ist ein NSNumber
dann tun:
if ([condition intValue]) {
// non-zero - true (YES)
} else {
// zero - false (NO)
}
aktualisieren: Basierend auf den folgenden Kommentar aus dem OP:
Zustand ist ein Bool, wie if (myView. frame.size.height == 30)
Dies bedeutet, dass die eigentliche Frage d o überprüft etwas wie:
if ((myView.frame.size.height == 30) == YES)
Dies ist sehr ungewöhnlich. Die richtige Sache zu tun ist:
if (myView.frame.size.height == 30) {
// true - height is 30
} else {
// false - height is not 30
}
Es gibt keine Notwendigkeit, sich über falsche Positive oder Negative zu sorgen. 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.
Beachten Sie, dass! Zustand und Zustand == NEIN ** nicht ** gleich sind. Es gibt einen Randfall. Nehmen wir an, Bedingung ist 256. Dies würde in 0 überlaufen und gleich "NEIN" sein, da es einfach ein signiertes Zeichen ist. Der Operator '!' Gibt jedoch einen C-Booleschen Wert zurück, der explizit vom C-Standard für alle anderen Werte als Null als wahr definiert wird. Also wäre der 'BOOL'' NEIN' und der 'Bool' wäre' wahr'. – borrrden
Fehlt das, scheint das obige Beispiel zu funktionieren. Der Fall, der mich gebissen hat, ist etwas anders. Für bestimmte Fälle von BOOL (nämlich der 8-Bit-Überlauf) (Flag) und (Flag == NEIN) werden beide falsch sein. – borrrden
Sie können auch die Objective-C 2.0-Notation für Accessoren für boolValue – HAS