Jak sprawdzić, czy obiekt NSNumber jest zerowy lub pusty?Sprawdź, czy numer NSN jest pusty
OK nil jest proste:
NSNumber *myNumber;
if (myNumber == nil)
doSomething
Ale jeśli obiekt został utworzony, ale nie ma w niej wartość, bo zadanie nie powiodło się, w jaki sposób mogę to sprawdzić? Użyj czegoś takiego?
if ([myNumber intValue]==0)
doSomething
Czy istnieje ogólna metoda testowania przedmiotów na pustki jak na NSString dostępnych (zobacz ten post)?
Przykład 1
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];
których wartość nie emptyNumber
zawierać? Jak mogę sprawdzić, czy emptyNumber
jest pusty?
Przykład 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;
Co się stanie, jeśli mogę użyć tego po emptyNumber
został ustawiony na zero?
[emptyNumber intValue]
Czy otrzymam zero?
Przykład 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!");
Jak ten sposób NSLog nigdy nie jest wywoływana. myEmptyValue
nie jest nil
, a nie NSNull
. Czy zawiera on dowolną liczbę?
@ [0.7] da NSNumber to zdecydowanie nie zero, ale intValue zwróci 0. To jest zły test. – gnasher729
Wzniesiono ze względu na wielkie szczegóły, które pomogły wyjaśnić coś, z czym mam do czynienia od domyślnych. NSNumber * savedPin = [[NSUserDefaults standardUserDefaults] valueForKey: @ "someKey"]; zwraca obiekt, który ma klasę __NSCFConstantString i tym samym nie udało się porównać z zerą. DZIĘKI! –