我正在构建一个自我测验风格的应用程序。它基本上是全屏幻灯片的集合视图。每张幻灯片都有多个注释,用户可以点按这些注释来测试自己。幻灯片按类别分组,用户可以按类别进行过滤。
我想实现根据用户是否已标记已知/未知/等来过滤注释的功能。我当前的数据模型(相关部分)如下所示:
--------------- ---------------------------------------------
| Slide | | Annotation |
--------------- ---------------------------------------------
| name | | lastKnown (enum for known/not known/etc.) |
| category | | ... |
--------------- ---------------------------------------------
| annotations | <--->> | slide |
--------------- ---------------------------------------------
自上次知道/未知/等。响应生活在注释对象中,在我看来,我需要:
我全都设置为1和2,但遇到麻烦3.我在这一点上的理解是每个幻灯片的注释关系将返回注释对象的NSSet。我似乎需要测试其中的每一个,看它们是否符合已知/未知/等标准。过滤。在我看来,我应该在谓词中执行它,所以我可以重新加载集合视图来刷新数据。
有人能以最有效的方式提供一些最佳实践吗?
答案 0 :(得分:1)
您应该查看ANY操作:
NSPredicate *slidePredicate = [NSPredicate predicateWithFormat:@"category == 'category'"];
NSPredicate *annotationPredicate = [NSPredicate predicateWithFormat:@"ANY annotations.lastKnown = 'known'"];
NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[slidePredicate, annotationPredicate]];