我有一本词典词典,我从一个词典中检索过。
假设高层次词典是COUNTRIES,每个子词典都是COUNTRY。
每个COUNTRY子词典都有名称,货币,人口,旗帜等键。
在
中检索字典及其子变量之后NSMutableDictionary * countries = [NSMutableDictionary dictionaryWithContentsOfFile:path];
如何检查是否存在名为“euros”的货币?
我的意思是,我正在检查子字典的键中的值...是否可能?怎么样?
提前感谢。
注意:它是字典中的字典,而不是字典中的数组或数组中的字典。每个子字典使用数字存储在主字典内。因此,在子字典#1内可以是字典,其中键例如是法国,欧元,3000万人。
我需要查看法语子词典是否存在于主词典中。
答案 0 :(得分:1)
使用此选项可以获取任何名为“Euro”的货币(在NSArray中)。
NSArray *allCountries = [countries allValues];
NSPredicate *euroPredicate = [NSPredicate predicateWithFormat:@"currency == %@", @"Euro"];
NSArray *filteredCountries = [allCountries filteredArrayWithPredicate:euroPredicate];
如果你需要做的就是检查这样的国家是否存在,那么你可以做一个简单的if (filteredCountries.count > 0) { }
。
旁注:如果国家名称也存储在内部NSDictionary中(可能是国家名称是外部字典键),我认为顶级数据结构不是NSDictionary的原因 - 也许NSArray作为外部结构会更合适吗?
答案 1 :(得分:1)
NSDictionary *_currencyDict = [countries objectForKey:@"currency"];
NSArray *_currencies = [_currencyDict allValues];
NSPredicate *_currencyPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@", _currencies];
BOOL _eurosResult = [_currencyPredicate evaluateWithObject:@"euros"];
if (_eurosResult)
NSLog(@"The value 'euros' is in the 'currency' dictionary, within the 'countries' dictionary.");
else
NSLog(@"The value 'euros' was not found.");