使用NSPredicate中的聚合函数检查BOOL值

时间:2013-01-25 09:59:35

标签: ios ios5 core-data ios6 nspredicate

我有两个实体叫做文件夹和文件,Folder与文件实体有一对多的关系。文件实体有一个名为completedStatus的属性,它是一个BOOL。我需要检查哪个文件都有这个completedStatus == TRUe in a specific folder.file NSOrderedSet。


为此,我尝试了这种方式,通过阅读文档,但它无法正常工作

[NSPredicate predicateWithFormat:@"completedStatus = 1 IN %@", file.note]];

所以请帮帮我。

此致 兰吉特

1 个答案:

答案 0 :(得分:1)

这应该做你想要的:

NSArray *files = ... // your array of File objects
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"completedStatus = 1"];
NSArray *completedFiles = [files filteredArrayUsingPredicate:predicate];

更新: NSOrderedSet没有使用谓词进行过滤的方法。但是您可以将有序集folder.file转换为数组:

NSArray *files = [folder.file array];

然后继续如上。

或者,您可以使用谓词

文件实体上发送获取请求
[NSPredicate predicateWithFormat:@"completedStatus = 1 && folder = %@", theFolder]

假设您已将文件实体中的反向关系folder定义为文件夹实体。