Iphone 如何筛选数组字典
我有一个数组字典,我想根据数组中的元素对其进行过滤。我的字典看起来像这样 我想根据第三项过滤字典,例如第三项(时区ID)为“America/Adak”的所有键 我想我可以用keysOfEntriesPassingTest来做这件事,但我不知道该怎么做。我发现了一些示例代码Iphone 如何筛选数组字典,iphone,xcode,filter,nsdictionary,predicate,Iphone,Xcode,Filter,Nsdictionary,Predicate,我有一个数组字典,我想根据数组中的元素对其进行过滤。我的字典看起来像这样 我想根据第三项过滤字典,例如第三项(时区ID)为“America/Adak”的所有键 我想我可以用keysOfEntriesPassingTest来做这件事,但我不知道该怎么做。我发现了一些示例代码 mySet = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) { if( [[obj port] isEqual: [N
mySet = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) {
if( [[obj port] isEqual: [NSNumber numberWithInt: 8080]]) {
return YES;
else
return NO;
}]
但我不知道如何重写它,以便在我的情况下工作。我不理解所需的语法
有人能帮我弄清楚如何实现这个过滤器吗
谢谢你,约翰
mySet = [myDict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) {
if ([[obj objectAtIndex:2] isEqualToString:@"America/Adak"]) {
return YES;
} else {
return NO;
}
}];
请注意,正如方法名称所示,结果集将只包含键,而不包含数组本身
请注意,正如方法名称所示,结果集只包含键,而不包含数组本身。Ole,谢谢
我发现示例代码中的if语句格式不正确。我想你只为我修改了相关部分。为了让其他人看看这个问题,这里是最后的工作代码
mySet = [citiesDictionary keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop)
{
if([[obj objectAtIndex:2] isEqualToString:@"America/Adak"]){
return YES;
}else {
return NO;
}
}];
奥立,谢谢你
我发现示例代码中的if语句格式不正确。我想你只为我修改了相关部分。为了让其他人看看这个问题,这里是最后的工作代码
mySet = [citiesDictionary keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop)
{
if([[obj objectAtIndex:2] isEqualToString:@"America/Adak"]){
return YES;
}else {
return NO;
}
}];
再次感谢。你能帮我理解这个方法的语法吗。EntriesPassingTest的键是什么:^(id键,id对象,BOOL*stop)试图告诉我。Obj必须是存储的对象,但您将如何使用key以及BOOL*stop是什么?好的,我想我明白了。。。我可以使用key来测试key是否匹配,比如contains或start with。我认为在找到第一个匹配项时,可以使用stop停止过滤???不确定如何使用stop。方法
keysOfEntriesPassingTest:
将在字典中迭代,并为字典中存储的每个对象调用一次大括号中的代码块。在块中,您可以使用键
获取当前值的键
(例如在您的情况下,@“Adak,America”
),obj
是值本身,stop
是告诉方法在某一点停止迭代的一种方式。所以,是的,它按照你的假设工作。对于块返回的每个对象YES
,该方法将对象的密钥存储在它最终返回给您的集合中。再次感谢。你能帮我理解这个方法的语法吗。EntriesPassingTest的键是什么:^(id键,id对象,BOOL*stop)试图告诉我。Obj必须是存储的对象,但您将如何使用key以及BOOL*stop是什么?好的,我想我明白了。。。我可以使用key来测试key是否匹配,比如contains或start with。我认为在找到第一个匹配项时,可以使用stop停止过滤???不确定如何使用stop。方法keysOfEntriesPassingTest:
将在字典中迭代,并为字典中存储的每个对象调用一次大括号中的代码块。在块中,您可以使用键
获取当前值的键
(例如在您的情况下,@“Adak,America”
),obj
是值本身,stop
是告诉方法在某一点停止迭代的一种方式。所以,是的,它按照你的假设工作。对于块返回的每个对象YES
,该方法将对象的键存储在它最终返回给您的集合中。