基于对多关系另一端的属性,为项目构造核心数据获取的最佳方法
Best way to structure Core Data fetch for items, based on attribute(s) at other end of to-many relationship
我正在构建一个自测式应用程序。它基本上是全屏幻灯片的集合视图。每张幻灯片都有多个注释,用户可以点击这些注释来测试自己。幻灯片按类别分组,用户可以按类别过滤。
我想实现根据用户是否标记了注释来过滤注释的功能 known/not known/etc。我当前的数据模型(相关部分)如下所示:
--------------- ---------------------------------------------
| Slide | | Annotation |
--------------- ---------------------------------------------
| name | | lastKnown (enum for known/not known/etc.) |
| category | | ... |
--------------- ---------------------------------------------
| annotations | <--->> | slide |
--------------- ---------------------------------------------
自上次 known/not known/etc。响应存在于注释对象中,在我看来我需要:
- 在幻灯片实体上创建一个提取(对于我的 NSFetchedResultsController)
- 对所选类别使用谓词(因此我只获得该类别的幻灯片)
- 筛选幻灯片是否有任何注释,其中 lastKnown 与所选 known/not known/etc 过滤器相匹配(这样,如果该类别的幻灯片没有任何与所选 known/notknown/etc.filter,被排除)
我在 1 和 2 上都设置好了,但在 3 上遇到了问题。我目前的理解是每张幻灯片的注释关系将 return 一个注释对象的 NSSet。看来我需要测试每一个,看看它们是否符合 known/not known/etc 中的标准。筛选。在我看来,我应该在谓词中这样做,这样我就可以重新加载集合视图来刷新数据。
谁能提供一些关于最有效方法 3 的最佳实践?
您应该查看 ANY 操作:
NSPredicate *slidePredicate = [NSPredicate predicateWithFormat:@"category == 'category'"];
NSPredicate *annotationPredicate = [NSPredicate predicateWithFormat:@"ANY annotations.lastKnown = 'known'"];
NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[slidePredicate, annotationPredicate]];
我正在构建一个自测式应用程序。它基本上是全屏幻灯片的集合视图。每张幻灯片都有多个注释,用户可以点击这些注释来测试自己。幻灯片按类别分组,用户可以按类别过滤。
我想实现根据用户是否标记了注释来过滤注释的功能 known/not known/etc。我当前的数据模型(相关部分)如下所示:
--------------- ---------------------------------------------
| Slide | | Annotation |
--------------- ---------------------------------------------
| name | | lastKnown (enum for known/not known/etc.) |
| category | | ... |
--------------- ---------------------------------------------
| annotations | <--->> | slide |
--------------- ---------------------------------------------
自上次 known/not known/etc。响应存在于注释对象中,在我看来我需要:
- 在幻灯片实体上创建一个提取(对于我的 NSFetchedResultsController)
- 对所选类别使用谓词(因此我只获得该类别的幻灯片)
- 筛选幻灯片是否有任何注释,其中 lastKnown 与所选 known/not known/etc 过滤器相匹配(这样,如果该类别的幻灯片没有任何与所选 known/notknown/etc.filter,被排除)
我在 1 和 2 上都设置好了,但在 3 上遇到了问题。我目前的理解是每张幻灯片的注释关系将 return 一个注释对象的 NSSet。看来我需要测试每一个,看看它们是否符合 known/not known/etc 中的标准。筛选。在我看来,我应该在谓词中这样做,这样我就可以重新加载集合视图来刷新数据。
谁能提供一些关于最有效方法 3 的最佳实践?
您应该查看 ANY 操作:
NSPredicate *slidePredicate = [NSPredicate predicateWithFormat:@"category == 'category'"];
NSPredicate *annotationPredicate = [NSPredicate predicateWithFormat:@"ANY annotations.lastKnown = 'known'"];
NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[slidePredicate, annotationPredicate]];