Comment vérifier si un objet NSNumber est nul ou vide?vérifier si NSNumber est vide
nul OK est facile:
NSNumber *myNumber;
if (myNumber == nil)
doSomething
Mais si l'objet a été créé, mais il n'y a pas de valeur parce que la cession a échoué, comment puis-je vérifier? Utilisez quelque chose comme ça?
if ([myNumber intValue]==0)
doSomething
Y at-il une méthode générale pour tester des objets sur le vide comme pour NSString disponibles (voir ce post)?
Exemple 1
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];
Quelle valeur ne emptyNumber
contient-il? Comment puis-je vérifier si emptyNumber
est vide?
Exemple 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;
Qu'arrive-t-il si j'utilise ceci après emptyNumber
a été mis à zéro?
[emptyNumber intValue]
Est-ce que je reçois zéro?
Exemple 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!");
Comme cette façon NSLog est jamais appelé. myEmptyValue
n'est pas nil
et pas NSNull
. Donc, il contient un nombre arbitraire?
@ [0.7] donneront un NSNumber n'est certainement pas zéro, mais intValue retournera 0. Donc c'est un mauvais test. – gnasher729
Refusé pour le grand détail qui a aidé à expliquer quelque chose que j'ai affaire par défaut. NSNumber * savedPin = [[NSUserDefaults standardUserDefaults] valueForKey: @ "someKey"]; renvoie un objet qui a la classe __NSCFConstantString et donc les comparaisons à nil échouaient. MERCI! –