21

核心數據在NSManagedObjectContext類中提供了「executeFetchRequest」方法,我們可以使用該方法從表中獲取數據並以任何需要的方式使用它。爲什麼使用NSFetchedResultsController?

現在有另一種方法通過使用NSFetchedResultsController並將其提供給UITableView從表中獲取和數據。

我的問題,現在:

  • 哪種方式比較快?我的意思是性能明智的,哪一個是最好的?

  • NSFetchedResultsController僅用於UITableViews嗎?

  • NSFetchedResultsController的優點和缺點是什麼?

  • 而最後一件事情,「爲什麼我們使用NSFetchedResultsController」,是什麼讓它比其他方式更好。

回答

40

而最後一件事, 「爲什麼我們使用 NSFetchedResultsController」,什麼事情 使得它比其他任何 的方式更好。

FRC類旨在自動處理與爲表提供複雜和動態數據相關的所有開銷。

如果你只是一個簡單的,一個數據從未改變的節表,那麼FRC就沒有優勢。你只需要一次抓取就完成了。但是,如果在用戶界面(用戶重新安排,刪除或添加)或通過代碼(例如正在從服務器更新數據)中更改數據,則FRC將提供處理所有這些不斷變化的機制,並確保表格準確反映這些變化。

哪種方式比較快?我的意思是 性能明智的,哪一個是最好的 ?

使用fetch或FRC沒有主要的性能差異,因爲它們都使用相同的獲取機制從持久性存儲中獲取數據。如果您有複雜的動態數據,那麼使用FRC比手動複製其功能要快。

什麼是 NSFetchedResultsController的優點和缺點。

參見上文。

NSFetchedResultsController是否只有 與UITableViews一起使用?

是的,它確實只對表格有用。

+0

它非常有意義,所有額外的開銷已經被照顧。就像我的情況一樣,記錄是由服務器頻繁更新的。因此,任何時候UI都可以更新,以前我使用的是獲取請求,並且更新UI時我使用的是NSNotifications,但是FRC現在給出了這樣的緩解,更改會自動反映在表視圖中。 – Ansari 2010-09-17 17:00:50

+0

所以,非常感謝.... :) – Ansari 2010-09-17 17:01:10

+0

簡單而好的答案,人們可​​以很容易地理解它。 – 2014-10-17 11:19:40

相關問題