我在我的应用中使用搜索控制器。用户输入一个单词,然后返回一个核心数据实体列表,其中每个实体都有一个包含该单词的标题。这很容易。
但我还想在此列表的底部返回其他实体,这些实体将搜索词作为其标题,并且与我首先搜索的那些实体存在多种关系。
因此,如果我在标题中找不到搜索词,我想搜索与第一个实体类型相关的实体的标题。
单个NSPredicate可以实现吗?
这是我的核心数据模型
答案 0 :(得分:5)
另外,你不应该使用单向关系。它们对性能不利,Xcode应该通过对它们的警告来尖叫。不要忽视警告。
对于搜索,我会按照@Felixyz所说的,两次取出并合并结果。如果数据变得庞大,那么您将希望将“搜索标题”拆分为具有关系的单独对象,然后只搜索它。
修复你的人际关系。即使你从不使用它们,Core Data也会。
答案 1 :(得分:1)
您有两种类型的实体:Term
和Part
。你想要一个像这样的结构列表:
Term
== title title
个实体
Part
实体title
== title 如果这是正确的,您将无法使用一个NSFetchRequest
获取列表的两个部分。最简单的方法是执行两次单独的提取,然后将第二个列表附加到第一个列表。如果您为数据添加更多结构,您可以在一个花哨的请求中完成此任务,但据我所知,这是不值得的。如果你有大量的数据,你当然应该考虑巧妙的方法来索引它。