如何将数据提供给iPhone应用以转换为Core Data

时间:2011-02-03 22:57:58

标签: iphone objective-c ios core-data

我正在编写一个iPhone应用程序,使用MapKit在Google地图上显示项目的位置。我有一组要在地图上显示的项目。这些项目可能会随着时间的推移而发生变化,因此我希望在Web服务器上集中管理它们,并允许客户端在新版本可用时获取它们。我有几种方法可以做到这一点,我想对我目前的想法提出一些意见或提出更好的替代方案。

首先,我想使用Core Data将项目存储在iPhone上,因为我将此作为Core Data的学习机会,与其他任何东西一样。不过,我想听听有关服务器端存储和数据格式化的想法,以便iOS转换为核心数据对象。

  1. 在包含所有项目的服务器上保留一个平面XML文件。获取应用程序定期检查新版本(我将通过手机进行GET检查),当检测到新版本时,我将下载整个XML文件(~1MB)并使用NSXMLParser解析它并基本上擦除现有的Core Data对象,并使用新对象填充商店。
  2. 将对象存储在服务器上的数据库中,使用PHP作为XML文件提供它们。让应用程序定期检查新的/更新的条目,然后只需获取它们,解析它们并添加到商店。
  3. 将对象存储在服务器上的数据库中,使用JSON或其他格式提供它们,这些格式比使用XML和NSXMLParser的先前方法更好(如果有更好的方法,我正在寻找这方面的建议XML等。)
  4. 所以,我想要在手机上使用Core Data的解决方案,我理解NSXMLParser所以我知道如何才能真正实现该解决方案。我想知道是否有其他方法可以提供数据,从而减少将服务器端数据转换为Core Data对象所需的操作量。

1 个答案:

答案 0 :(得分:1)

首先是服务器端:我毫不怀疑您必须将数据存储在数据库中,因为它非常灵活(您可以向客户端提供其他请求,您可以在数据库中添加/更新/更改表,同时外部保持不变)。

至于您从服务器发送的数据格式,我认为这是您自己的偏好和问题域的问题。我更喜欢XML,但这就是我。你可以阅读这篇非常好的文章JSON vs XML 如果您选择JSON,那么我建议您使用这个非常好的实用程序框架来解析它:json-framework

但是您的客户不应该关心数据的格式。您必须使用构造函数定义接口,如

-(id) initWithDictionary:(NSDictionary*) dict;

无论你在哪里获得该字典(在解析XML / JSON之后,或者从DB或其他方式解析)。