我正在构建一个应用程序,它实现了一个文本输入发生变化时查询数据库的活动文本搜索。 它可以工作,但当NSFetchedResultsController的fetchRequest返回超过一定数量的项目(>〜20)时,键盘输入会很迟钝。NSFetchedResultsController performFetch很慢返回很多项
func textViewDidChange(textView: UITextView) {
let predicate = NSPredicate("itemID" > 0) //<- returns all items
self.frc.fetchRequest.predicate = predicate
self.frc.executeFetchRequest(nil)
}
请注意,没有实际的UI更新正在进行,所以laggy键盘输入必须由fetchRequest引起。
有没有一种方法来实现大量项目的实时搜索没有这种滞后?
它接缝你的谓词不会改变。每次按键上的所有项目都有什么用处? – Mundi
示例代码是将问题缩小到仅提取项目的结果。在实际项目中谓词发生变化,UI更新显示新数据 – matteok
一种解决方案是只有在至少有2个字符后才开始读取。 – Mundi