Je veux vérifier si une NSDictionary
est vide. Je le fais comme ça.
mutDictValues = [[[NSUserDefaults standardUserDefaults] objectForKey:@"dicValues"]mutableCopy];
NSLog(@"dictValues are %@",mutDictValues);
if(mutDictValues == NULL){
arrCities = [[NSMutableArray alloc]init];
NSLog(@"no cities seleceted");
}else{
arrCities = [[NSMutableArray alloc]init];
arrCities = [mutDictValues objectForKey:@"cities"];
[self placeCities];
}
Mais il se bloque toujours sur cette ligne arrCities = [mutDictValues objectForKey:@"cities"];
avec l'erreur suivante:
-[__NSCFConstantString objectForKey:]:
Quelqu'un peut il m'aider avec ça ?
Lors de la récupération des valeurs de dictionnaire de NSUserDefaults, le dictionnaire Est automatiquement converti en chaîne indiquant le blocage de Et permet de vérifier l'utilisation du dictionnaire.
[dictionary count];
EDIT: - Utilise dictionaryForKey: method
NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:@"hi",@"one",nil];
[[NSUserDefaults standardUserDefaults] setObject:dict forKey:@"dic"];
NSDictionary *dictn = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"dic"];
NSLog(@"%@",[dictn objectForKey:@"one"]);
if ( [mutDictValues count] == 0 ) {
//code here
}
else {
//code here
}
Après avoir récupéré votre dic, cela devrait faire
essaye ça,
if([myDict count] > 0)
NSLog(@"Dictionary is not empty");
else
NSLog(@"Dictionary is empty");
J'ai eu un problème un peu différent mais il est lié donc je voudrais le partager ici.
Je récupérais les services Web et stockais les données dans NSDictionary, puis à nouveau Obtention de objectForKey qui était Null. Donc, la solution que j'ai trouvée est comme sous
NSMutableDictionary *result = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
// NSLog(@"%@" , result);
NSMutableDictionary *sup = [result objectForKey:@"keysupplied"];
NSNull *n=[NSNull null];
if ( sup ! = n ){
//Your code if its not null
}
La raison derrière l’utilisation de NSNull était qu’elle revenait (NSNull *) lorsque j’ai mis au point l’application. Donc j’ai enfin compris de cette façon.
Quelque part, vous traitez une nsstring (une sous-classe concrète) comme NSdictionary.
Comme la plupart des réponses ont correctement fait remarquer que vous transmettez le sélecteur non reconnu objectForKey:
à une instance NSString
au lieu de NSDictionary
, d'où l'observation d'une exception.
-[__NSCFConstantString objectForKey:]:
Cochez NSUserDefaults
pour voir si cities
renvoie un dictionnaire ou autre chose. Vous pouvez le faire de deux manières
I. NSLog
toutes les données dans NSUserDefaults
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
II. Vérifiez le fichier plist qui stocke la NSUserDefaults
à partir du dossier Application. Vérifiez cette réponse pour plus de détails.
J'espère que cela pourra aider.
Vous pouvez utiliser le code ci-dessous
if(dict == nil)
{
// blank
}else{
// there is dictionary
}
BOOL containsKeyABC = [myDict: valueForKey:@"ABC"];
int items = dict.count;
if (items > 0) {
//not empty
}
essayez ce code
NSMutableDictionary *dict = ...
BOOL isEmpty = ([dict count] == 0);