2010-12-08 75 views
2

我目前正在開發針對iOS 4.2的iPhone。從CoreData填充TableViews的層次結構 - 我應該依靠NSFetchedResultsController

我想知道什麼是最好的方式來填充一組TableViews的是一個像模型對象樹的時候。每個級別與其下面的項目都有一對多的關係。

下面是數據的排序我處理一個簡單的例子:

MAGZINE [有許多]問題[有許多]文章

我想創建一個TableView中與雜誌的名單。點擊單元格會產生一系列問題。點擊問題單元格將生成文章列表。

在我看來,這樣做的簡單的方法是創建一個雜誌的牽強的NSSet根視圖控制器。當一個雜誌單元被輕敲時,控制器創建一個新的IssueViewController並將其傳遞給selectedMagazine.issues。現在在IssueViewController中,當點擊一個問題單元格時,相應問題的文章NSSet被傳遞給一個新的ArticleTableViewController。

什麼我不知道的是以下...

  • 是否有「最好」的方式去獲取數據了共識?使用NSFetchedResultsController從根節點遍歷對象圖?
  • 如果一段時間內沒有訪問該問題,核心數據是否會從其母公司的雜誌集中卸載一些內容(如問題)?或者隨着對象圖上更多的節點被訪問,更多的東西會讓內存混亂?

我已經在這裏做了相當數量的瀏覽,但沒有看到任何可以回答我的問題的東西。提前致謝。

回答

1

當使用這些向下鑽取類型的接口時,我更喜歡使用NSFetchedResultsController。學習曲線有點陡峭,但它提供了許多功能和控制,尤其是在使用由xCode提供的應用程序模板時,您通常必須自己編寫代碼。即在NSFetchedResultsController的設置中,您可以設置您的獲取批量大小(對性能調優有幫助),部分(UI優化),排序描述符等。如果您要使用NSSet路由,您必須手動編寫大量代碼NSFetchedResultsController已經爲您提供了什麼。

我問過Apple Dev論壇是否有關於何時使用NSSet或NSArray v。NSFetchedResultsController的最佳實踐,以及Apple專家的迴應是否取決於您和您的實施。在過去幾年中完成了幾個應用程序之後,我明白他們現在從哪裏來。這實際上取決於你需要什麼樣的應用程序,以及你想花多少時間來學習NSFetchedResultsController的細節。

-2

我不知道你使用,(ABAP/SAP ???)什麼軟件工具或編程語言的,但我有不同的工具和層次結構的工作,這是我學習。

首先,跳過視覺控制/數據庫連接,並且考慮數據模型,altought樹比圖來使用。其次,存儲在不同表格中並表示爲分層的數據很難使用和管理。

三。不要嘗試使用所有這些層次信息來加載/填充控件,請逐步進行。

例如,僅在您的「問題」中加載treeview控件第一級節點。稍後,添加一個加載所選問題/ treenode的「文章」的按鈕。

另一種方式,就是與網格的形式與所有「問題」,補充說,打開一個新的形式和電網與涉及到具體選擇的「問題」行的小區的「文章」的按鈕。

乾杯。

+2

您是否看到問題標籤? – BoltClock 2010-12-08 23:48:59

+0

嘿,感謝您的快速回復:)我正在使用CoreData orm框架在iPhone上執行此操作。 – 2010-12-08 23:50:22