Создать NSPredicate, который передает объект в метод экземпляра - PullRequest
0 голосов
/ 23 августа 2011

Я создал NSManagedObject с именем TItem.К этому объекту я добавил вспомогательный метод экземпляра, подобный следующему:

- (BOOL) isItemForUser:(TUser *)user;

isItemForUser сравнивает различные свойства объекта TUser с самим собой и возвращает BOOL на основе результатов сравнения.

Я хочу создать предикат, который сможет передавать объект TUser этому методу, чтобы я мог найти все объекты TItem, которые возвращали бы YES с данным переданным объектом.По сути, я хочу сделать что-то вроде следующего:

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"isItemForUser:%@ == YES",self.user];

Приведенный выше синтаксис явно не корректен, но я ищу что-то в том же духе.Есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 августа 2011

FUNCTION - это то, что вы ищете:

[NSPredicate predicateWithFormat:@"FUNCTION(SELF, 'isItemForUser:', %@) == YES", self.user]

Однако следует отметить две вещи:

  1. isItemForUser: должен будет вернуть NSNumber, а не BOOL
  2. Я на 99,9999% уверен, что это не будет работать как часть предиката запроса на выборку
0 голосов
/ 23 августа 2011

Я бы изучил возможность выполнения любых сравнений, выполненных в вашем методе isItemForUser в предикате. Возможно, упростите вашу модель данных, чтобы упростить это сравнение? Например, добавление некоторого нового атрибута, который сопоставляется с пользователем и рассчитывается при создании объекта. Таким образом, сравнение очень просто.

...