存储数据iPhone应用程序的最佳实践

Mug*_*nth 2 iphone cocoa-touch

我有一个非常依赖TableViews和SQLite数据库的iPhone应用程序.你在哪里存储数据?在我的情况下,我从App Delegate中的Web中提取数据并将其存储在AppDelegate中,并定期将其保存到DB.

rootviewcontroller是一个tableview,它读取appdelegate对象并填充自身.

但是,根据Evan Doll(stanford讲座)的说法,似乎在AppDelegate中存储数据似乎是一个糟糕的设计.我不想最后为此付钱.任何人都可以建议一个更好的替代方案吗?

Jak*_*ake 7

为了我自己的用途,我创造了某种MVC结构.我有一个DataManager(单例),它包含数组或字典中的所有必需数据(主要在Models; plain NSObjects中表示).

视图(Nib文件和ViewControllers)与DataManager通信以通过get函数获取数据.如果数据已经存在于DataManager中,它将返回数据(通过通知).如果不; 它将调用转发给Controller然后获取它.

在那个Controller中,我以离线/在线方式(可能对你来说不重要)分离呼叫,其中如果在线,则呼叫是XML请求,如果是离线,则呼叫是SQLite数据库.

然后,Controller可以在DataManager上设置数据,并将通知发送到视图.

然后循环再次开始,View可以通过DataManager访问数据.所有这些都发生在异步调用中,因此通知(如果我让DataManager或控制器混淆了Views,它将不是线程安全的).

我的AppDelegate只进行主视图,控制器和DataManager的第一次初始化,然后接管.

将模型(数据)放在一个中心位置是很好的,这样您就可以轻松地在每个类中访问它,而不会创建太多的类依赖项.

我将大多数类型的功能分解为单独的类,例如DataManager for data,用于异步URL请求的DownloadManager,XML Parser,用于从NSDictionaries构建模型的工厂,DatabaseConnector等.