我需要对多种语言实施常见问题解答。因此,我创建了具有以下属性的实体Question
:
language
collection
-用不同的语言标记相同的问题存储
所有这些都保存在公共数据库的iCloud中。
正在获取
在一个应用程序中,我提取了关于en
语言和应用程序上安装的当前语言的所有问题。全部保存在核心数据中。
显示
我需要显示(使用FRC)当前语言的所有问题以及英语的所有问题(如果未针对当前语言创建具有相同collection
的问题)。
示例(问题,语言,收藏):
Q1, pl, 1
Q2, pl, 3
Q3, en, 1
Q4, de, 1
Q5, es, 2
Q6, en, 2
如果我当前的语言是 pl ,那么我想提出以下问题:
Q1, pl, 1
Q2, pl, 3
Q6, en, 2
我该如何实现?我需要创建NSPredicate来简单地排除那些不应获取它们的问题。
答案 0 :(得分:0)
您正在考虑这个问题。如果您要处理的实体少于500个(我认为您是这样),那么在通过查询进行过滤或在获取后执行内存中过滤器之间,性能差异很小。同样,看起来您不必处理提取后更改的对象-因此使用fecthedResultsController并没有很大的好处。只需将它们全部获取,然后像对任何数组一样对它们进行过滤和排序。
如果您不排序和显示用户数据,而只是从服务器下载静态数据,则可能根本不使用核心数据是值得的,但是我相信您已经研究了这些替代方法。
您可以通过使用sectionKeyPath使用fecthedResultsController解决此问题。按集合对请求进行排序,然后按集合对它们进行分组。现在,每个部分都代表一个集合。使collectionView中的行数等于FRC的节数。对于每一行,请在部分中查看,然后选择使用最喜欢的语言的问题。仅当您按“收集”键排序时,此方法才有效。如果您想对它们进行不同的排序,则可以更改“ collection”值,而不仅仅是更改随机int或uuid,还可以按照您想要的方式对其进行排序。