创建将对象传递给实例方法的NSPredicate

时间:2011-08-23 12:19:54

标签: ios core-data nspredicate

我创建了一个名为TItem的NSManagedObject。对于该对象,我添加了一个如下所示的辅助实例方法:

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

isItemForUser将TUser对象中的各种属性与自身进行比较,并根据比较结果返回BOOL。

我想创建一个能够将TUser对象传递给该方法的谓词,这样我就可以找到所有TItem对象,这些对象在传递给定对象时返回YES。从本质上讲,我想做类似以下的事情:

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

上面的语法显然不正确,但我正在寻找同样精神的东西。有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我会探索在谓词中的isItemForUser方法中进行的任何比较。也许简化数据模型以使比较更容易?例如,添加一些映射到用户的新属性,并在创建对象时计算。这样,比较非常简单。

答案 1 :(得分:0)

FUNCTION正在寻找:

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

但有两点需要注意:

  1. isItemForUser:必须返回NSNumber,而不是BOOL
  2. 我99.9999%肯定这不会作为获取请求的谓词的一部分工作