This is how I set or create my NSDictionary object:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setObject:[NSArray arrayWithObjects:@"ar", nil] forKey:@"AppleLanguages"];
[userDefault synchronize];
And, here I fetch and store into a local NSDictionary:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSDictionary *dictLanguage = [userDefault objectForKey:@"AppleLanguages"];
[userDefault synchronize];
Here I want to check whether it is @"ar" or @"en" in a same method:
if ([[[dictLanguage objectForKey:@"AppleLanguages"] isEqualToString:@"ar"]]) {
strCategoryUrl = [NSString stringWithFormat:@"%@%@", ROOT_URL, API_PRODUCT_MAIN_AR];
}
else if ([[dictLanguage objectForKey:@"AppleLanguages"] isEqualToString:@"en"]) {
strCategoryUrl = [NSString stringWithFormat:@"%@%@", ROOT_URL, API_PRODUCT_MAIN_EN];
}
Your userDefault structure is like as shown below:
{
"AppleLanguages" : [
"ar"
]
}
So, your dictionary has AppleLanguages as key with an array of values as Value. when you access this key you get an Array not dictionary.
So, Instead of
NSDictionary *dictLanguage = [userDefault objectForKey:@"AppleLanguages"];
Use
NSArray *arrLanguage = [userDefault objectForKey:@"AppleLanguages"];
and your If condition should be
if ([arrLanguage[0] isEqualToString:@"ar"]) {
strCategoryUrl = [NSString stringWithFormat:@"%@%@", ROOT_URL, API_PRODUCT_MAIN_AR];
}
else if ([arrLanguage[0] isEqualToString:@"en"]) {
strCategoryUrl = [NSString stringWithFormat:@"%@%@", ROOT_URL, API_PRODUCT_MAIN_EN];
}