NSPredicate过滤掉子类结果

时间:2013-05-19 15:33:17

标签: ios ios5 nspredicate nsfetchrequest

我有两个班,公司和MyCompany。 MyCompany是Company的子类,Company是NSManagedObject的子类。我正在尝试为NSFetchRequest编写谓词,该谓词将返回类Company的结果,但会过滤掉MyCompany对象。

我尝试过以下内容(建议来自https://stackoverflow.com/a/8065935/472344):

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"class != %@",NSStringFromClass([myCompany class])];

但是我收到了一个错误:

'keypath class not found in entity <NSSQLEntity CKCompany id=1>'

我也试过了(从这里建议https://stackoverflow.com/a/11693983/472344,我知道我真的不想SELF isKindOfClass,但我只是用与答案中给出的完全相同的命令进行测试):

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self isKindOfClass: %@", [myCompany class];

并收到以下错误:

'Unknown/unsupported comparison predicate operator type'

如何编写谓词来实现我想要的?我支持iOS 5及以上版本。

1 个答案:

答案 0 :(得分:9)

您可以设置

[fetchRequest setIncludesSubentities:NO];

以便获取请求仅返回请求的实体类型的对象, 并且不包括子实体。

如果在核心数据获取请求中使用谓词,那么(据我所知)不可能在谓词中引用对象类或实体名称。