我有一个20000条记录的预加载数据库。使用NSFetchedResultsController搜索每个字符CoreData是非常缓慢的大量记录
基本上有两个实体进行搜索,City Entity
和另一个是street Entity
。市有“名称”属性和Street Entity
也有名称属性,city and street
都在one-to-many relationship
。一个城市可以有很多街道。
现在,当用户可以搜索任何字符,如“a或b”任何东西,它应该显示用户相应的城市和/或街道.Eveytime我必须重新加载和重新配置NSFetchedResultsController。
我实施了NSPredicate
来过滤记录。
let predicate = NSPredicate(format:"(name CONTAINS[c] %@) OR (SELF.streets.name CONTAINS[c] %@)",text,text)
predicateArray.append(predicate)
这个谓词用于过滤的records.I'm也使用MagicalRecord在coreData.The的包装搜索曾经是很为我在寻找每一个字符。
任何帮助将非常感激。
为什么你的搜索中包含的,而不是开头?为什么允许用单个字母搜索?你在后台线程上运行搜索吗?如果用户继续输入,是否添加了逻辑以防止搜索运行?看起来你正在创造一些东西,担心大多数人不会有的问题...... – Wain
我有使用包含关键字和单字母搜索的要求。 – user1068810