Короткий ответ: вы не можете.
Длинный ответ: вы можете, но это будет лот работы.Вероятно, я бы сделал что-то вроде этого:
- Выполните рекурсивный анализ всех
NSExpressions
предиката, чтобы собрать все строки -keyPath
и сохранить их в массиве.Это будут свойства ABRecord
объектов, которые вы будете запрашивать. - Выполните итерацию по вашему массиву
ABRecord
объектов и создайте словарь для представления каждого из них.Этот словарь будет иметь запись ID, а также значение ABRecordCopyValue()
каждого из «желаемых» путей, привязанных к имени свойства. - Эти словари будут объединены в массив.
- Этот новый массив (словарей) будет отфильтрован с помощью предиката
- . После фильтрации уменьшенный массив словарей будет преобразован обратно в массив объектов
ABRecord
и возвращен.
Звучит как интересная проблема.Я подумаю об этом немного больше и, возможно, вернусь и отредактирую свой ответ.