我有一个数组字典,我希望根据数组中的元素进行过滤。我的字典看起来像这样......
"Abu Dhabi, U.A.E." = ( "24.466665", "54.416668", "Asia/Dubai" ); "Accra, Ghana" = ( "5.583333", "-0.100000", "Africa/Accra" ); "Adak, America" = ( "", "", "America/Adak" ); "Addis Ababa, Ethiopia" = ( "9.050000", "38.700001", "Africa/Addis_Ababa" );
我想根据第3项过滤字典,例如第三项(时区ID)为“America / Adak”的所有键。
我想我可以用keysOfEntriesPassingTest做到这一点,但我不知道如何做到这一点。我找到了一些示例代码......
mySet = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) {
if( [[obj port] isEqual: [NSNumber numberWithInt: 8080]]) {
return YES;
else
return NO;
}]
但我无法弄清楚如何在我的情况下重写这个。我不明白所需的语法。
有人可以帮我弄清楚如何实施这个过滤器吗?
谢谢,约翰
答案 0 :(得分:6)
mySet = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) {
if ([[obj objectAtIndex:2] isEqualToString:@"America/Adak"]) {
return YES;
} else {
return NO;
}
}];
请注意,正如方法名称所暗示的那样,结果集只包含键,而不是数组本身。
答案 1 :(得分:0)
Ole,谢谢你!
我发现的示例代码中的if语句格式不正确。我认为你只修改了我的相关部分。为了其他人看到这个问题的好处,这是最终的工作代码......
mySet = [citiesDictionary keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop)
{
if([[obj objectAtIndex:2] isEqualToString:@"America/Adak"]){
return YES;
}else {
return NO;
}
}];