Фильтр базовых данных NSPredicate по классу сущностей? - PullRequest
7 голосов
/ 03 апреля 2012

Как бы создать NSPredicate для фильтрации по сущности класса Contact?

Решение Проверка NSP предиката для класса объектов Сбои:

[NSPredicate predicateWithFormat:@"person.class == %@", [Contact class]];

*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
    reason: 'keypath person.class not found in entity <NSSQLEntity User id=12>'

Фон

У меня есть сущности базовых данных User (пользователь приложения) & Contact (контакт адресной книги), оба потомка Person (абстрактная сущность). Person имеет множество identities, которые могут быть emails, phones или usernames.

Чтобы создать текстовое сообщение наподобие текстового сообщения, я хочу создать NSFetchRequest для Identity сущностей, где person класса Contact.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Возможно, вы перепутали несколько вещей. Ответ, который вы указываете, касается предиката для фильтрации массива UIView s. Предикат в основных данных работает немного по-другому.

Чтобы достичь желаемого результата, просто установите entity вашего запроса на выборку на @"Contact".

0 голосов
/ 04 апреля 2012

Если у вас есть обязательное поле в Контакте, вы можете отфильтровать его, если оно не равно нулю. Если у вас нет обязательного поля в Контакте (это не Персона), вы можете добавить фиктивное обязательное поле и применить к нему фильтр.

...