Поиск по массиву словарей с несколькими критериями - PullRequest
3 голосов
/ 31 мая 2011

У меня много NSDictioanries в NSArray.Поскольку их около 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>

Прямо сейчас яЯ думаю о циклическом просмотре массива, поиске первого критерия, затем повторном цикле в фильтрованном массиве, поиске второго критерия и т. д. Но это 7 для циклов, по крайней мере, 1300 словарей.

Какие у меня альтернативы?Спасибо.

ОБНОВЛЕНИЕ: Хорошо, поэтому для каждого из критериев, которые я перечислил выше, у меня будет текстовое поле, и пользователь укажет критерии там, а затем нажмет кнопку поиска ... (если это делает вещипонятнее)

Также это для iPhone / iPad

Ответы [ 3 ]

7 голосов
/ 31 мая 2011

Ну, есть простой способ сделать это, вы можете использовать NSPredicate для поиска вашего массива на основе критериев, которые вы упомянули выше.

Также в качестве бонуса, если выесли вы хотите отобразить этот массив в отсортированном виде, вы должны использовать NSSortDiscriptor .

1 голос
/ 31 мая 2011

Пока ответ @ Robin точен, вы можете также рассмотреть возможность использования встроенной поддержки базы данных, например Core Data .

0 голосов
/ 31 мая 2011

Хорошо, поиск больших объемов данных всегда будет сложным, особенно на iPhone / iPod.В этом случае, я думаю, вам следует только разрешить пользователю выполнять поиск по одному из этих критериев и просто выполнять поиск по отдельным массивам, содержащим эти данные.Примером одного из этих массивов может быть

array</p> <p>matt</p> <p>bob</p> <p>mrlol</p> <p>/array

. Затем используйте номер индекса из этого массива и извлеките соответствующий словарь.Возможно, это не самое ясное объяснение, пожалуйста, прокомментируйте, если у вас есть вопросы.

Редактировать: к предыдущему ответу, я не думаю, что он спрашивал о том, как сравнивать данные, я думаю, что он хотел найти способискать данные, поэтому я не думаю, что NSPredicate был тем, что он искал.

...