5

我有两个课程,Company 和 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 及更高版本。

4

1 回答 1

10

你可以设置

[fetchRequest setIncludesSubentities:NO];

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

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

于 2013-05-19T15:52:20.600 回答