1

我試圖獲取使用NSFetchedResultsController在一個UITableView從CoreData 10000records並試圖使其儘可能快(因爲要求有一種描述需要更長的時間來獲取這一數額大量來自CoreData數據數據的)。抓取使用兩個NSFetchedResultsController

我想從第一個和主NSFetchedResultsController(在表的委託方法中使用)從CoreData中獲取100個記錄,這是在另一個隊列中顯示的表中,我開始在viewDidAppear另一個對所有10000records auxiliarFRC。在AuxFRC中獲取結束後,我將AuxFRC分配給主FRC,以便傳輸所有記錄,並重新載入表格。

我的問題是,UITableView卡在第一個加載的行,直到AuxFRC結束抓取,即使我派遣performFetch,我不明白爲什麼會發生這種情況,或者如果這種方式是錯誤的其他方式可以是用於獲取10000條記錄並保持最新數據是否更改?

+0

使用NSFetchedResultsController是獲取大量數據的最佳方式。你使用[request setFetchBatchSize:20]? 20號就是例子。 – 2013-02-15 14:13:18

+0

是的,我爲它們設置了一個批處理大小,第一個爲batchLimit設置爲100,但是這不會改變任何內容,即使前100個記錄被加載到表中,它們都會被捲動,直到auxiliar結束提取。 .. – sheisd 2013-02-15 14:17:12

+0

也許你的謂詞很慢。給我們一個你使用的謂詞的例子。 – 2013-02-15 14:39:19

回答

1

我想問題是NSManagedObjectContext - 這不是線程安全的,我用這兩個提取相同的。我創建了原始副本並在第二個上下文中更改了AuxFRC。這解決了一切。

0

訣竅是用FRC的緩存機制和協調異步抓取與顯示線程。

全部摘要於this答案。

+0

我想問題是NSManagedObjectContext - 這不是線程安全的,我用這兩個提取相同的。我剛剛創建了一個原始副本,並在第二個上下文中更改了AuxFRC。希望這解決了一切。 – sheisd 2013-02-15 15:59:18

+0

如果確實如此,或者幫助您找到解決方案,請不要忘記在系統啓用後立即檢查上面的答案。 – Mundi 2013-02-15 16:21:26