Ios 是否从NSDictionary的数组中查找值?
我有一个Ios 是否从NSDictionary的数组中查找值?,ios,nsarray,nsdictionary,Ios,Nsarray,Nsdictionary,我有一个NSArray包含多个NSDictionary对象,这个NSDictionary又有一个包含一些NSStrings/NSNumbers的数组 此NSArray如下所示 ( { "bins_arr" = ( 531662, 549177, 540165, 546616, 549777, 549778,
NSArray
包含多个NSDictionary
对象,这个NSDictionary又有一个包含一些NSStrings/NSNumbers
的数组
此NSArray
如下所示
(
{
"bins_arr" = (
531662,
549177,
540165,
546616,
549777,
549778,
549779,
532663,
549852,
529495,
532662,
529117,
533890,
544170,
554619,
542418,
540175,
552137,
542531,
542556,
552093,
540531,
552790,
541497,
554637,
526421,
431921,
412800,
431922,
464558,
508159,
456822,
450900,
508126,
508125,
517700,
430463,
414746,
461797,
438628,
461796,
510460,
520386,
421175,
455038,
524133,
518936,
455390,
405450,
456407,
438587,
405451,
493714,
549149
);
"issuing_School" = ABCDEF;
status = 0;
title = ABCDEF;
},
{
"bins_arr" = (
429393,
416644,
416645,
416643,
416646,
436390,
436389,
436388,
470613,
524253,
428306,
489604,
478893,
414767,
428348,
469645,
421493,
470614,
543705
);
"issuing_School" = PQRS;
status = 0;
title = "PQRS";
},
{
"bins_arr" = (
422316,
421560,
483541
);
"issuing_School" = TCSB;
status = 0;
title = "TCSB";
}
)
现在我需要在NSArray
中找到一个给定的NString/NSNumber
,如果找到了它,我还需要对相应的发行商
值进行罚款,例如,如果我找到461797,那么它应该搜索它,并找到该发行商是PQRS
一种方法是将每个NSArray
放在NSArray
-->NSDictionary
中,循环遍历整个NSArray
,并将给定的数字与当前的数字和NSArray
中的数字匹配,但是我不想要这个搜索,因为这个NSArray
有可能是NSDictionary
的对象,所有NSDictionary
对象又有大NSArray
有谁能给我推荐一些很棒的观点来达到这个目的吗。
提前感谢。将阵列转换为集合
NSArray* array = ...;
NSSet* set = [[NSSet alloc] initWithArray:array];
if ([set containsObject:aNumber]) ...
不涉及循环。无论集合中有多少个元素,时间都是恒定的 您不必自己使用循环(对于数字数组),您可以使用containsObject查找特定的数字(尽管该方法可能在内部使用循环)。是的,我可以使用containsObject,但最终我只能使用循环,因为containsObject确实使用循环。顺便说一句,感谢@rdelmarThere没有办法遍历不显式或隐式涉及循环的数组(可能除了使用谓词——我不确定如何实现,而且通常比循环慢)。除非以某种逻辑方式对内部数组进行排序,否则在没有循环的情况下,无法真正搜索它。而且它们看起来没有分类。伙计们,trie数据结构呢????我对它知之甚少,我认为它解决了我的问题,但我不太确定。只有在创建集合后的恒定时间。