2009-05-19 164 views
2

我有一個嚴重依賴TableViews和SQLite數據庫的iPhone應用程序。你在哪裏存儲數據?在我的情況下,我從App Delegate的Web中提取數據並將其存儲在AppDelegate中,並定期將其保存到數據庫中。存儲數據的最佳做法iPhone應用程序

rootviewcontroller是一個讀取appdelegate對象並填充自身的tableview。但根據Evan Doll(斯坦福講座)的說法,在AppDelegate中存儲數據看起來似乎是一種糟糕的設計。我不想最終付錢。任何人都可以提出一個更好的替代解決方案?

回答

7

爲了我自己的用途,我創建了一些MVC構造。我有一個DataManager(一個單例),它在數組或字典中包含所有必需的數據(主要表示在模型中;普通的NSObject)。

視圖(Nib文件和ViewControllers)與DataManager通信以通過get函數獲取其數據。如果數據已存在於DataManager中,它將返回數據(通過通知)。如果不;它將呼叫轉發給控制器,然後獲取它。

在該控制器中,我以離線/在線方式分隔呼叫(對您可能不重要),如果在線,呼叫是XML請求,並且如果離線呼叫到SQLite數據庫。

然後控制器可以在DataManager上設置數據,並向通知發送通知。

然後循環再次開始,View可以通過DataManager訪問數據..所有這些都發生在異步調用中,因此通知(如果我讓DataManager或者Controller與視圖混淆,它不會是線程安全的)。

我的AppDelegate只執行主視圖,控制器和DataManager的第一次初始化,然後接管它們。

將模型(數據)放在中心位置很好,所以您可以在每個類中輕鬆訪問它,而不會創建太多的類依賴關係。

我分手了大多數類型的功能爲單獨的類也一樣,對DataManager的數據,異步URL請求下載管理器,XML解析器,工廠從NSDictionaries,一個DatabaseConnector等建立模型等

+0

不錯的設計。肯定會在我的應用中使用它:) – lostInTransit 2009-05-19 14:26:43

相關問題