2011-07-25 139 views
1

我有以下2个数组。数组A具有10个ID,另一个数组B具有300个ID和所有相应的数据。从另一个阵列查询数组

我想要检索的B用的ID,其在阵列A中注明,所有数据

我可以只循环在数组A的每个条目数组B中的所有条目,但是这看起来有点重为了这么简单的任务。这种情况下最好的解决方案是什么?

Thnx!

回答

1

可能use a predicate(a,b是你的阵列):

NSPredicate* filter = [NSPredicate predicateWithFormat: @"self IN %@", a]; 
NSArray* result = [b filteredArrayUsingPredicate: filter]; 

尽管如此,如果在你的数组对象是像串简单的事情,它可能只工作。

+0

非常好,这就是要找的东西 – Jos

0

我不明白你将如何去做,否则,如果你正在使用数组。访问正确元素的唯一方法是循环访问数组。

+0

请停止制作微小的标题编辑,这会导致语法错误的标题。如果您要进行大量批量修改,则需要多花2秒钟,并在剥离假标签后大写标题,并确保结果标题真正有意义。 – meagar

+0

当然,我会这样做。谢谢。虽然 –

+0

确保语法的第一个字是大写,但我不明白语法是如何变得更加不正确。如果可能,请将标题转为问题。而不是离开**如何做 **,使它**我怎样才能 **(注意问号)。还要扫描问题的主体,看看是否存在明显的错误,删除签名/标记行(如果存在),在适当的位置大写“i”等等。许多编辑都很好,但您应该专注于使问题与您一样可以,而不是让其他人去做大量的编辑工作。 – meagar

2

如果你不需要一个有序数组,你可以切换到一个哈希表(例如NSSet),它具有更快的查找时间(对O(1)的强偏向)。否则,您必须遍历整个数组并检查其所有成员。

1

当您填充数组B时,您可以改为使其成为dictionary。假设idsunique,那么您可以从数组B中获得数组A中键的对象的值。这将避免循环并且与哈希表等同。

返回的值将具有特定unique id的相应数据。