iOS Core Data Architecture提示

我只想获得构build我的第一个核心数据应用程序的最佳方式,以及主要对象和交互所需的一些指针。

数据远程存储,我将需要通过HTTP访问它,它将以JSON格式进行响应。 我想使用核心数据caching在设备上。 每一天都会有新的数据在服务器上,所以我需要访问它并相应地更新模型。

有没有我可以用来帮助我的SDK类,还是我要手动滚动它?

我想我正在寻找一个模型控制器,我打电话来获取数据,它会返回核心数据caching的数据,也许后台调用Web服务获取最新的数据,然后通知有新的看法数据。 当我从JSON格式的Web服务获取数据时 – 我将需要将其映射到ManagedObjects,并添加到我的核心数据上下文中。

谢谢dtuckernet,这就是我所做的 – 从很多来源收集信息,我相信这是最好的解决scheme。 任何人都可以随意批评(build设性地)….

  1. 我在CoreDataStack.h(singleton)中有我的核心数据堆栈 – 并不是完全必要的,但是它使我的应用程序委托类更加清晰。
  2. 我有一个基础CoreDataBackedTableViewController:UITableViewController
  3. 我的每个表格视图屏幕扩展CoreDataBackedTableViewController,并有一个伊娃到ModelController类。
  4. 一个示例ModelController类有一个 – (NSFetchedResultsController *)getData方法,它构造NSFetchedResultsController(也保留一个引用)并将其返回给视图控制器,该控制器也将其存储在CoreDataBackedTableViewController(监听数据的更新和编辑)中。 有ModelController类允许我封装我的数据访问可能有2个不同的视图控制器使用这个(iPhone和iPad也许)
  5. 在getData中 – 我以asynchronous方式调用我的后端webservice。 使用代表进行callback
  6. 后端使用SBJSON进行parsing,NSHttpConnection和一个手动滚动的HttpService类。
  7. 当后端返回数据时,它会调用更新核心数据的ModelController上的委托 – 我的fetchedResultsController知道这一点,并自动更新我的接口! 这是多么酷 – 我没有花很多精力参与。 我必须做一些检测,以确定我是否已经下载过数据,以避免重复。
  8. 准备推出到我的应用程序的其余部分….

如果有人想要澄清任何步骤,请告诉我。

在这里玩很多不同的东西。 请允许我提出一些build议:

  1. 为了从服务器获取数据,我会看看ASIHTTPRequest。 这是一个很好的解决scheme来pipe理你的HTTP请求(无论你使用的是JSON,XML还是其他)。 http://allseeing-i.com/ASIHTTPRequest/
  2. 对于JSON翻译,我会看看SBJSON。 该网站有关于如何开始的文档: http : //code.google.com/p/json-framework/
  3. 为了您的整体架构,我将实现一个包装您的服务调用的委托模式。 在这个委托中,在将数据传递给应用程序的其余部分之前,您将把JSON数据转换为实际的Objective-C类。
  4. 一旦数据被parsing并放置到Objective-C对象中(我将把这些对象作为与您的数据模型目录绑定的NSManagedObject的子类),我将执行保存。
  5. 然后我会使用NSNotification来通知所需的视图数据已经改变。

你绝对,一定要使用RESTKit 。 这是从REST风格的Web服务到Core Data的直接连接。 使用Xcode的内置工具定义数据模型,使用RESTKit为Web服务定义一个映射层,并让该库完成繁重的工作。 太棒了