我所有View Controller的中央数据源

时间:2011-08-09 02:16:26

标签: ios objective-c iphone ipad uiviewcontroller

所以我有一个应用程序与一堆(如25+)视图控制器。这些vc使用了大量数据,其中大部分数据都可以在应用程序中本地存储,或者存储在我的服务器上。我宁愿将这些数据存储在我的服务器上以最小化应用程序大小,所以为了做到这一点,我在某处读到这样做的最佳做法是拥有一个数据类,这将是一个特殊的类,它可以从中获取所有数据。互联网同时在一个地方,而不是仅仅根据需要获取个人数据,如viewDidLoad或类似的地方。所以我的问题是,在我的应用程序中创建一个中央数据源并且每个类都从中抽取它真的更好。如果是这样,你能提供一个如何设置该课程的例子。例如,如何使它在后台运行(我想是一个不同的线程)以及如何根据需要将NSDictionarys和NSArrays等从数据源传递到单个类。提前致谢。如有必要,我可以澄清一下。

2 个答案:

答案 0 :(得分:1)

您正在谈论两个不同的主题:

  1. 从所有视图控制器的主源访问数据。
  2. 从服务器访问数据。
  3. 最适合您的解决方案是创建一个新类,该类将保存某些不同类使用的变量。 This tutorial解释了如何做到这一点 - 我认为这将是您在互联网上找到的最佳解决方案之一。

    要解决第二个问题,您还应该创建一个执行SQLite语句并从数据库获取信息的类。你应该使用SQLite来做到这一点,如果你不喜欢它,你可以尝试使用Core Data,尽管我认为SQLite要简单得多。 This tutorial描述了如何做到这一点。

    完成这两项操作后,您可以创建一个类的实例,该类在视图控制器之间共享信息的类中为您处理数据库服务,并从不同的视图控制器访问该实例。

    最后,您可以尝试在不同的线程上执行类似的任务。您应该尝试使用NSOperationQueue对象 - 他们将为您完成大部分工作。我建议在Apple提供的developer documentation中阅读它们,以了解它的工作原理。

答案 1 :(得分:1)

根据您在评论中的回复,我建议使用此解决方案:

  1. 将数据从服务器传输到设备 - 下载后 来自服务器的数据,将其存储到SQLite数据库中 设备
  2. 从众多视图控制器访问数据 - 使用核心数据 从任何视图访问数据库中的下载数据 控制器。
  3. 如果您对数据库编程知之甚少,Core Data是一种简单的启动方式。它将您的表封装到您可以访问的类中,就像简单的objective-c类一样,因此您不必学习SQL。您也可以随时从任何和所有视图控制器中调用它们,这样您就不必创建一个特殊的类来处理数据。与通过视图控制器层次结构传递数据相比,它在性能和设计方面也更好。请参阅指南here