使用多个条件搜索字典数组

时间:2011-05-31 04:35:15

标签: objective-c cocoa-touch nsarray nsdictionary

我在NSArray中有很多NSDictioanries。由于其中大约有1300个,我需要根据以下标准进行搜索:

1. Name
2. DOB
3. Type
4. Grade
5. Condition
6. PUP 
7. Unit Number

以下是此类词典的示例:

<Unit>
<UnitNumber>20110501100507134</UnitNumber>
<Name>01'' 2ply Mat</Name>
<DOB>3/24/2011 12:00:00 AM</DOB>
<Type>2ply Mat</Type>
<Grade>Cull</Grade>
<Condition />
<Depth>01</Depth>
<Width>01</Width>
<Length>01</Length>
<PUP>Cable</PUP>
<Finishing />
</Unit>

现在我正在考虑循环遍历数组,搜索第一个标准,然后再次循环通过过滤后的数组并搜索第二个标准等等.... 但通过至少1300个词典,这就是7循环。

我有什么选择? 感谢。

更新:好的,对于我上面列出的每个条件,我将有文本字段,用户将在那里指定标准,然后按搜索按钮...(如果这样可以更清楚)

此外,这适用于iPhone / iPad

3 个答案:

答案 0 :(得分:7)

有一种简单的方法,你可以使用NSPredicate根据你上面提到的标准搜索你的数组。

另外作为奖励,如果要以排序方式显示该数组,则应使用NSSortDiscriptor

答案 1 :(得分:1)

虽然@ Robin的答案很明显,但您也可以考虑使用一些内置的数据库支持,例如Core Data

答案 2 :(得分:0)

好的,搜索大量数据总是很难,特别是在iPhone / iPod上。在这种情况下,我认为你应该做的只是允许用户根据这些标准之一进行搜索,并只搜索包含该数据的单个数组。其中一个阵列的示例可以是

array

matt

bob

mrlol

/array

然后使用该数组中的索引号并提取相关字典。这可能不是最明确的解释,如果您有疑问请发表评论。

编辑:对于上一个答案,我不认为他在询问如何比较数据,我认为他想要一种搜索​​数据的方法,所以我不认为NSPredicate是他想要的。< / p>