Wie überprüfe ich, ob ein NSNumber-Objekt null oder leer ist?Überprüfen, ob NSNumber leer ist
OK nil ist einfach:
NSNumber *myNumber;
if (myNumber == nil)
doSomething
Aber wenn das Objekt erstellt wurde, aber es gibt keinen Wert darin, da eine Zuordnung fehlgeschlagen ist, wie kann ich das überprüfen? Verwenden Sie so etwas?
if ([myNumber intValue]==0)
doSomething
Gibt es eine allgemeine Methode für Objekte auf Leere Prüfung wie für NSString verfügbar (siehe diese post)?
Beispiel 1
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];
Welchen Wert hat emptyNumber
enthalten? Wie kann ich prüfen, ob emptyNumber
leer ist?
Beispiel 2
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSString *myString = [dict objectForKey:@"emptyValue"];
if (myString == nil || [myString length] == 0)
// got an empty value
NSNumber *emptyNumber=nil;
Was passiert, wenn ich diese nach dem Gebrauch geschieht emptyNumber
auf Null gesetzt wurde?
[emptyNumber intValue]
Bekomme ich null?
Beispiel 3
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *myEmptyValue = [dict objectForKey:@"emptyValue"];
if (myEmptyValue == nil)
// NSLog is never called
NSLog(@"It is empty!");
Wie diese Weise wird NSLog nie genannt. myEmptyValue
ist nicht nil
und nicht . Also enthält es eine willkürliche Zahl?
@ [0.7] geben NSNumber, die definitiv nicht Null ist, aber intValue gibt 0 zurück. Das ist also ein schlechter Test. – gnasher729
Upvoted für die großen Details, die dazu beigetragen haben, etwas zu erklären, mit dem ich es zu tun habe. NSNumber * savedPin = [[NSUserDefaults standardUserDefaults] valueForKey: @ "someKey"]; gibt ein Objekt zurück, das die Klasse __NSCFConstantString hat und somit Vergleiche mit nil fehlschlagen. VIELEN DANK! –