Комплексное использование элементов поиска в адресной книге через какао
Я пытаюсь использовать ABPerson
метод searchElementForProperty:...
создать в меру сложный поиск. В частности, я хочу найти множество людей, у которых есть адрес электронной почты, который заканчивается на "foo.com
"и НЕ являются частью предварительно населенной группы"My workunit
".
Сопоставление только с адресом электронной почты кажется тривиальным. Создание соединения против (обратного) членства в группе кажется невозможным.
Да, я могу сделать это, выполнив очевидную явную перекрестную проверку самостоятельно, но если смысл наличия функции поиска непосредственно в адресной книге заключается в оптимизации производительности, не имеет ли смысла, чтобы средство поиска было достаточно полным, чтобы иметь возможность сделать это?
Заранее спасибо Тони
2 ответа
Вы можете скопировать все данные из адресной книги в хранилище базовых данных и использовать предикаты для работы с этими данными. Предикаты имеют тенденцию быть очень полезными при построении сложных запросов.
Руководство по программированию предикатов
В этом случае вам придется получить все контакты ([[AddressBook sharedAddressBook] people]
), а также иметь сущность Core Data под названием Contact
(или что-то похожее), что бы сохранить имена, электронные письма, адреса и другие свойства из ABPerson
объект.
Имея это, вы, вероятно, можете создать NSPredicate
фильтровать с условиями, которые вы хотите.
Группы ссылаются на своих членов в соответствии с recordId. Единственный способ, с помощью которого я нашел такую операцию, - это найти родительские группы человека. Это не так просто, как хотелось бы. Кажется, что Apple не заботится о групповом поиске, который был бы чрезвычайно полезен.