长 CoreData 谓词将多个术语匹配到属性 + 关系
Long CoreData predicate to match multiple terms to attribute + relationships
我正在使用 swift 4,Xcode 9,iOS 11
我正在通过教程和问答帖子继续了解 CoreData,但我似乎不知道如何回答这个问题。
我有一个 CoreData 实体,它有一个属性和 12 个与不同实体的关系,每个实体包含 1-3 个属性。这是因为主实体中的任何给定对象在每个相关实体中都可以有多个附加详细信息。
我希望用户能够搜索和匹配数据库中的几乎所有内容。我当前的尝试使用 FetchRequest 循环遍历主实体,并在每个循环中匹配关系。这可行,但(如预期的那样)有点慢。
我尝试使用如下所示的谓词:“名称包含术语或任何 relation.name 包含术语......”
但这会变成一个很长的谓词,并且每个 fetchrequest 需要 30 多秒来加载。比没有谓词慢得多。
我如何从本质上更有效地搜索整个数据库?有没有更好的方法来编写谓词?有没有更好的方法来设计我的数据模型?
感谢您的指导。
1 个月后,解决方案是拆分 fetchRequests 并分别为每个请求添加一个谓词。此外,这让我可以选择特定的相关实体是否需要 BEGINSWITH[cd] 或 CONTAINS[cd]。
回顾一下:
- 一个长谓词滞后了 ~30 秒
- 组合谓词也好不到哪里去
- 拆分 fetchRequests 并为每个请求添加一个小谓词导致搜索所有 12 个关系的零 UI 滞后。
非常感谢 Jon Rose 的建议。
我正在使用 swift 4,Xcode 9,iOS 11
我正在通过教程和问答帖子继续了解 CoreData,但我似乎不知道如何回答这个问题。
我有一个 CoreData 实体,它有一个属性和 12 个与不同实体的关系,每个实体包含 1-3 个属性。这是因为主实体中的任何给定对象在每个相关实体中都可以有多个附加详细信息。
我希望用户能够搜索和匹配数据库中的几乎所有内容。我当前的尝试使用 FetchRequest 循环遍历主实体,并在每个循环中匹配关系。这可行,但(如预期的那样)有点慢。
我尝试使用如下所示的谓词:“名称包含术语或任何 relation.name 包含术语......” 但这会变成一个很长的谓词,并且每个 fetchrequest 需要 30 多秒来加载。比没有谓词慢得多。
我如何从本质上更有效地搜索整个数据库?有没有更好的方法来编写谓词?有没有更好的方法来设计我的数据模型?
感谢您的指导。
1 个月后,解决方案是拆分 fetchRequests 并分别为每个请求添加一个谓词。此外,这让我可以选择特定的相关实体是否需要 BEGINSWITH[cd] 或 CONTAINS[cd]。
回顾一下:
- 一个长谓词滞后了 ~30 秒
- 组合谓词也好不到哪里去
- 拆分 fetchRequests 并为每个请求添加一个小谓词导致搜索所有 12 个关系的零 UI 滞后。
非常感谢 Jon Rose 的建议。