我遇到的問題如下:核心數據:背景讀取,NSFetchedResultsController和排序時間
我有一個UITableView
我與從NSFetchedResultsController
圍繞從核心數據6000點的行中檢索數據饋送。 NSFetchRequest
的fetchBatchSize
設置爲20,如果我不應用任何NSSortDescriptor
,則提取速度足夠快,不會阻塞UI線程。
不過,我確實需要顯示的字母順序排序那些行我用下面的NSSortDescriptor:
[[[NSSortDescriptor alloc] initWithKey:@"optionText" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
這裏是當事情發生變化,提取操作現在只需3秒左右才能完成,因爲6000行正在排序。很明顯,在這段時間內,用戶界面被阻止,用戶體驗很糟糕。
我知道我可以在後臺線程中執行取指操作,然後將對象ID傳遞給主線程,但是在那種情況下,我仍然可以在主線程中使用NSFetchedResultsController
(我也正在使用它來觀察數據變化)?
我也有indexed
我排序的屬性,但只優化查找和排序性能。
任何想法將不勝感激,謝謝!
愚蠢的問題,但我想你不能預先對數據進行排序,然後再將其加載到核心數據? – 2012-02-08 11:44:16
愚蠢的問題,在您運行提取請求時,managedObjectContext.hasChanges的值是什麼? – Drew 2013-01-25 06:53:24