代码之家  ›  专栏  ›  技术社区  ›  Mugunth

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

  •  2
  • Mugunth  · 技术社区  · 15 年前

    我有一个iPhone应用程序,它非常依赖于TableView和SQLite数据库。数据存储在哪里?在我的例子中,我从web-in-app委托中提取数据并将其存储在app delegate中,并定期将其保存到db。

    rootViewController是一个表视图,它读取AppDelegate对象并填充自身。

    但是,根据EvanDoll(斯坦福讲座)的说法,在AppDelegate中存储数据似乎是一个糟糕的设计。我不想以后再付钱。有人能推荐一个更好的解决方案吗?

    1 回复  |  直到 15 年前
        1
  •  7
  •   Jake    15 年前

    为了我自己的使用,我创建了某种MVC结构。我有一个数据管理器(singleton),它在数组或字典中保存所有必需的数据(主要用模型表示;普通nsobjects)。

    视图(NIB文件和视图控制器)与数据管理器对话,通过get函数获取数据。如果数据已经存在于数据管理器中,则返回数据(通过通知)。如果不是,它会将呼叫转发给控制器,然后控制器会收到呼叫。

    在这个控制器中,我用离线/在线模式(对您来说可能不重要)将呼叫分开,其中,如果在线,呼叫是一个XML请求,如果离线,呼叫是到一个sqlite数据库。

    然后,控制器可以在数据管理器上设置数据,并向视图发送通知。

    然后循环再次开始,视图可以通过数据管理器访问数据。 所有这些都发生在异步调用中,因此通知(如果我让数据管理器或控制器干扰视图,它将不会是线程安全的)。

    我的AppDelegate只对主视图、控制器和数据管理器进行第一次初始化,然后由它们接管。

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

    我还将大多数类型的功能划分为不同的类,如数据的数据管理器、用于异步URL请求的下载管理器、XML解析器、从nsdictionary构建模型的工厂、数据库连接器等。