我在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
答案 0 :(得分:7)
有一种简单的方法,你可以使用NSPredicate根据你上面提到的标准搜索你的数组。
另外作为奖励,如果要以排序方式显示该数组,则应使用NSSortDiscriptor。
答案 1 :(得分:1)
虽然@ Robin的答案很明显,但您也可以考虑使用一些内置的数据库支持,例如Core Data。
答案 2 :(得分:0)
好的,搜索大量数据总是很难,特别是在iPhone / iPod上。在这种情况下,我认为你应该做的只是允许用户根据这些标准之一进行搜索,并只搜索包含该数据的单个数组。其中一个阵列的示例可以是
array
matt
bob
mrlol
/array
然后使用该数组中的索引号并提取相关字典。这可能不是最明确的解释,如果您有疑问请发表评论。
编辑:对于上一个答案,我不认为他在询问如何比较数据,我认为他想要一种搜索数据的方法,所以我不认为NSPredicate是他想要的。< / p>