最近使用 Core Data 进行的搜索
Posted
技术标签:
【中文标题】最近使用 Core Data 进行的搜索【英文标题】:Recent searches with Core Data 【发布时间】:2009-05-13 20:33:32 【问题描述】:我正在为 iPhone 制作一个 Core Data 应用程序,但希望这个问题足以适用于 Mac OS X,以便在没有 NDA 问题的情况下得到解答。
当用户进行搜索时,我使用实体条目将每个结果保存到上下文中。我希望稍后可以在“最近搜索”部分检索这些结果。解决这个问题的最佳方法是什么?
我正在考虑的一种方法是添加另一个名为 History 的实体,其条目属性链接到该实体。第一个搜索结果的 Entry.history_id = 1,第二个结果的 Entry.history_id = 2,依此类推。然后,Recent Searches 将选择具有给定历史 ID 的条目实体。
【问题讨论】:
【参考方案1】:如果您想要的是一个有序的搜索列表,那么您是对的:您将不得不手动管理一些指定顺序的属性。您提供的history_id
是一种可能性。我可能会使用在插入实体实例时设置的日期属性。然后,您可以按此日期属性订购您的提取。为了存储实际搜索,我经常将查询的 NSPredicate 实例序列化为数据属性(自己处理序列化/反序列化)或可转换(使用默认的 NSUnarchiveFromData 传输)属性。
【讨论】:
History 实体的一个优点是我可以存储标题来标记搜索结果集(不是原始要求)。我确实喜欢对数据进行排序和归档 NSPredicate 以供以后检索的想法。 是的,这一切都在一个历史实体中:名称(字符串)、日期(日期)、谓词(可转换)属性。以上是关于最近使用 Core Data 进行的搜索的主要内容,如果未能解决你的问题,请参考以下文章
在 Core Data 上创建一个关键字结构并搜索那个大动物
如何在重新进入查看时转储 Core Data 搜索结果 FRC?
Core Data fetchedObjects data = nil 除了最后一个条目