Комплексное использование элементов поиска в адресной книге через какао

Я пытаюсь использовать ABPerson метод searchElementForProperty:... создать в меру сложный поиск. В частности, я хочу найти множество людей, у которых есть адрес электронной почты, который заканчивается на "foo.com"и НЕ являются частью предварительно населенной группы"My workunit".

Сопоставление только с адресом электронной почты кажется тривиальным. Создание соединения против (обратного) членства в группе кажется невозможным.

Да, я могу сделать это, выполнив очевидную явную перекрестную проверку самостоятельно, но если смысл наличия функции поиска непосредственно в адресной книге заключается в оптимизации производительности, не имеет ли смысла, чтобы средство поиска было достаточно полным, чтобы иметь возможность сделать это?

Заранее спасибо Тони

2 ответа

Вы можете скопировать все данные из адресной книги в хранилище базовых данных и использовать предикаты для работы с этими данными. Предикаты имеют тенденцию быть очень полезными при построении сложных запросов.

Руководство по программированию предикатов

В этом случае вам придется получить все контакты ([[AddressBook sharedAddressBook] people]), а также иметь сущность Core Data под названием Contact (или что-то похожее), что бы сохранить имена, электронные письма, адреса и другие свойства из ABPerson объект.

Имея это, вы, вероятно, можете создать NSPredicate фильтровать с условиями, которые вы хотите.

Группы ссылаются на своих членов в соответствии с recordId. Единственный способ, с помощью которого я нашел такую ​​операцию, - это найти родительские группы человека. Это не так просто, как хотелось бы. Кажется, что Apple не заботится о групповом поиске, который был бы чрезвычайно полезен.

Другие вопросы по тегам