I want to check if an NSDictionary
is empty. I am doing it like this.
mutDictValues = [[[NSUserDefaults standardUserDefaults] objectForKey:@\"dicV
try this,
if([myDict count] > 0)
NSLog(@"Dictionary is not empty");
else
NSLog(@"Dictionary is empty");
While retrieving the dictionary values from NSUserDefaults that dictionary automatically converted into string that is the reason for getting crashed and for checking dictionary use
[dictionary count];
EDIT:- use 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"]);
Somewhere you treat a nsstring (a concrete subclass) as NSdictionary.
I had a bit different issue but it is related so i would like to share it here.
I was fetching the webservices & storing data in NSDictionary & again Fetching objectForKey which was Null. So the solution i found is as under
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
}
The reason behind using NSNull was it was returning (NSNull *) when i debugged the application So i finally figured out this way.
try this code
NSMutableDictionary *dict = ...
BOOL isEmpty = ([dict count] == 0);
BOOL containsKeyABC = [myDict: valueForKey:@"ABC"];
int items = dict.count;
if (items > 0) {
//not empty
}