2011-02-12 53 views
2

我使用CoreData將數據存儲在iPhone應用程序中。存儲的數據旨在表示一棵樹,每條記錄都是一個節點(帶有指向其父節點的指針)。當用戶瀏覽這棵樹時,我將當前父代和當前的子代集緩存在一個NSArray中。我最初認爲這是有道理的,因爲它可以允許更快地訪問兄弟節點(當數據在UITableView中呈現並且用戶滾動時很有用)。我覺得每次需要下一個孩子時使用CoreData執行「獲取所有孩子」查詢將是低效的(即,我將對n個孩子進行n次相同的查詢,並且每次只返回第i個結果)。是否需要緩存從CoreData返回的數據?

現在,我不太確定這是必要的也不聰明(主要是因爲我瞭解到CoreData是一個我還沒有完全理解的野獸)。
有誰知道這是否是好的做法?我知道CoreData可以免費做很多事情,包括緩存結果,但是因爲我知道我的數據將像樹一樣使用,我的實現(或其他一些CoreData之外的緩存實現)會更有效嗎?

回答

4

當你使用coredata和UITableView時,你應該使用NSFetchedResultsController。它爲你做了所有的緩存,當然它比你更好。
fetchedResultsController還負責刪除,更改和插入coredata對象,即它會告訴您何時更新tableview。但對於後者來說,你必須設置fetchedresultscontroller委託方法。 documentation中包含代表功能的完整示例。

一般來說,擺脫你的緩存,這是不需要的。

相關問題