小编mon*_*ote的帖子

核心数据:后台获取,NSFetchedResultsController和排序时间

我遇到的问题如下:

我有一个UITableViewNSFetchedResultsController来自核心数据检索大约6000行的数据.该fetchBatchSizeNSFetchRequest设置为20,如果我没有进行任何NSSortDescriptor的获取是不够快,不会阻塞UI线程.

但是,我确实需要按字母顺序显示那些使用以下NSSortDescriptor的行:

[[[NSSortDescriptor alloc] initWithKey:@"optionText" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
Run Code Online (Sandbox Code Playgroud)

现在,当事情发生变化时,获取操作现在需要大约3秒才能完成,因为6000行正在排序.显然,在这几秒钟内,UI被阻止,用户体验非常糟糕.

我知道我可以在后台线程中进行获取,然后将对象ID传递给主线程,但在这种情况下我怎么还能NSFetchedResultsController在主线程中使用它(我也用它来观察数据的变化) ?

我还有indexed我正在排序的属性,但它只优化了查找而不是排序性能.

任何想法将不胜感激,谢谢!

sorting background core-data nsfetchedresultscontroller

8
推荐指数
1
解决办法
3406
查看次数