NSPredicate表达式用于过滤多对多关系的计数

mlu*_*own 8 core-data objective-c nspredicate

我有一个具有一对多关系的核心数据模型,例如:

@interface Person : NSManagedObect
@property (nonatomic, retain) NSSet *children;
@end
Run Code Online (Sandbox Code Playgroud)

我想创建一个谓词,它只给出了Person至少有一个孩子的s:

我试过了: [NSPredicate predicateWithFormat:@"person.children.count > 0"]

但我明白了NSPredicate to-many key not allowed.

mlu*_*own 17

好的,我在realm.io网站上找到了一些关于集合查询的文档,它们有答案:NSPredicate

你必须使用@count而不是只count:

所以: [NSPredicate predicateWithFormat:@"person.children.@count > 0"]

遗憾的是Apple没有自己记录(至少不是我能找到的).

  • 那是因为这主要是一个键值编码功能,而不是 NSPredicate:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/CollectionOperators.html#//apple_ref/doc/uid/20002176 -BAJEAIEE (2认同)