如何将数据提供给 iPhone 应用程序以转换为 Core Data
Posted
技术标签:
【中文标题】如何将数据提供给 iPhone 应用程序以转换为 Core Data【英文标题】:How to serve data to an iPhone app for conversion to Core Data 【发布时间】:2011-02-03 22:57:58 【问题描述】:我正在编写一个 iPhone 应用程序来使用 MapKit 在 Google 地图上显示项目的位置。我有一组要在地图上显示的项目。这些项目会随着时间而改变,所以我想在网络服务器上集中管理它们,并允许客户端在新版本可用时获取它。有几种方法可以做到这一点,我想就我目前的想法或建议提供一些意见,以提供更好的替代方案。
首先,我想使用 Core Data 将项目存储在 iPhone 上,因为我将其用作学习 Core Data 的机会,就像其他任何东西一样。不过,我想听听关于服务器端存储和数据格式的想法,以便 ios 转换为 Core Data 对象。
-
在服务器上保留一个包含所有项目的平面 XML 文件。让应用程序定期检查新版本(我会从手机上做一个 GET 来检查),当检测到新版本时,我会下载整个 XML 文件(~1MB)并使用 NSXMLParser 解析它并基本上擦除现有的 Core Data 对象并使用新对象填充存储。
将对象存储在服务器上的数据库中,使用 php 作为 XML 文件提供它们。让应用定期检查新的/更新的条目,然后获取、解析它们并添加到商店。
将对象存储在服务器上的数据库中,使用 JSON 或其他格式为它们提供服务,这将比以前使用 XML 和 NSXMLParser 的方法更好(如果有更好的方法,我正在寻找这方面的建议XML 等)
所以,我想要在手机上使用 Core Data 的解决方案,我了解 NSXMLParser,所以我知道如何真正实现该解决方案。我想知道是否有其他提供数据的方法可以减少将服务器端数据转换为 Core Data 对象所需的操作量。
【问题讨论】:
【参考方案1】:首先是服务器端:我毫不怀疑您必须将数据存储在数据库中,因为它非常灵活(您可以为您的客户提供各种请求,您可以在数据库中添加/更新/更改表,而外侧保持不变)。
至于您从服务器发送的数据格式,我认为这是您自己的偏好和问题域的问题。我更喜欢 XML,但这就是我。你可以阅读这篇非常好的文章JSON vs XML 如果你选择 JSON,那么我建议你使用这个非常好的工具框架来解析它:json-framework
但是您的客户不应该关心数据的格式。您必须使用构造函数定义接口,例如
-(id) initWithDictionary:(NSDictionary*) dict;
无论你从哪里得到那个字典(在解析 XML/JSON 或从 DB 或其他什么之后)。
【讨论】:
以上是关于如何将数据提供给 iPhone 应用程序以转换为 Core Data的主要内容,如果未能解决你的问题,请参考以下文章
如何将 inputsource 转换为 inputstream 并将其作为参数提供给 stringreader?