mcl*_*lin 9 iphone search core-data
一直在搜索高低:
在Core Data中,有没有办法中断/停止/取消和执行NSFetchRequest?
我执行在iPhone应用程序的渐进式搜索,我尝试了优化它的各种方式,但它是不够的(我有42000条记录),所以我要在的NSOperation运行.键入新字符时,我需要取消之前的fetchRequest,但[nsoperation cancel]不执行任何操作.
另一种方法可能是将我正在搜索的字段移动到其他可中断的索引中,可能在内存中,或者可能是一个单独的sqlite3数据库,它似乎可以用sqlite_interrupt中断.
Mar*_*rra 14
你问题的直接答案是否定的.您最好的选择,当前的设计是在操作中执行它们,但是您有线程障碍可以担心并减慢您的速度.请记住,如果您的操作未在主线程上运行,那么您需要单独NSManagedObjectContext
执行操作,否则您将遇到线程问题.
更好的问题:你为什么要为每个角色做一个新的获取?
如果您已经拥有先前搜索的获取结果且用户未删除字符,则只需获取现有结果并针对该字符运行谓词NSArray
.这将进一步细化搜索,而不是每次都进入磁盘.因为它在内存中会非常快.
实现搜索字段时,请考虑以下选项:
根据您正在搜索的内容(以及有多种方法可以重新规范Core Data存储以改进搜索),您可以在内存中预加载相当多的内容.即使有42K记录,如果搜索属性足够小,您也可以将它们全部加载到内存中.
如果用户按"A"开始,您仍然需要测试该用例.
什么部分NSFetchRequest
是慢的?点击SQLite数据库还是将数据加载到内存中?根据您的回答,您可以直接提高搜索性能.
归档时间: |
|
查看次数: |
1558 次 |
最近记录: |