2009-05-19 100 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

相关问题