【问题标题】:Core Data search in different enteties不同实体中的核心数据搜索
【发布时间】:2011-11-23 13:52:06
【问题描述】:

我在我的应用中使用搜索控制器。用户输入一个单词,我返回一个 Core Data 实体列表,其中每个实体都有一个包含该单词的标题。这很容易。

但我还想在此列表的底部返回以搜索词作为标题并且与我首先搜索的实体存在多对多关系的其他实体。

所以如果我在标题中没有找到搜索词,我想在与第一个实体类型相关的实体的标题中进行搜索。

这可以通过单个 NSPredicate 实现吗?

这是我的核心数据模型

【问题讨论】:

    标签: ios search core-data


    【解决方案1】:

    顺便说一句,您永远不应该使用单向关系。它们对性能不利,Xcode 应该通过关于它们的警告来向你尖叫。不要忽视警告。

    对于搜索,我会按照@Felixyz 所说的进行,两次提取并合并结果。如果数据变得庞大,那么您将希望将“搜索标题”拆分为具有关系的单独对象,然后仅针对该对象进行搜索。

    尽管修复你的关系。即使从不使用它们,Core Data 也会。

    【讨论】:

      【解决方案2】:

      您有两种类型的实体:TermPart。您想要一个结构如下的列表:

      • 首先是所有Term 实体title == 标题
      • 然后是所有Part 实体title == 标题

      如果这是正确的,您将无法使用NSFetchRequest 获取列表的两个部分。最简单的方法是执行两个单独的提取并将第二个列表附加到第一个列表。如果您为数据添加更多结构,您也许可以在一个奇特的请求中完成此任务,但据我所知,这不值得。如果您有大量数据,您当然应该考虑巧妙的方法来索引它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多