使用REST API后端(数据库支持)开发iOS应用程序

3
我正在开发一款iPad应用程序,并将其连接到后端的Django服务器。服务器主要是基于数据库的REST API(使用TastyPi完成记录)。
由于我对iOS不熟悉,所以我正在尝试了解开发这个应用程序的最佳方式。
因此,有几个相关的问题:
1. 是否有一个库简化您在代码中制作与服务器上的模型相似的“模型”的工作?
我想象一些像Django的ORM库,它允许您在Objective C中定义对象,这些对象与REST API提供的对象一一映射。
这种库可以抽象出所有缓存和本地对象与服务器上的对象之间的转换。
2. 如果这种类型的库不存在,是否存在一组最佳实践适用于此类项目?例如,我是否应该拥有反映DB的本地对象?我是否应该有一个负责处理与API相关的所有代码的类,还是应该在API的许多不同对象中编写请求?
简而言之,我在哪里可以学习到使用REST Api暴露数据库支持的iOS应用程序的正确方法?最好是教程,而不是查看现有项目的代码。

请访问我的答案,我刚刚使用以下代码调用了RESTful Web服务:http://stackoverflow.com/questions/12583667/xml-parsing-error-while-using-wcf-framework-for-web-services/12584067#12584067 - Nitin Gohel
4个回答

4

1) 对于ORM来说,iOS有Core Data可以让你构建实体并使用对象而不是SQL语句(如SELECT、LEFT JOIN等)。

其他人可能不知道,但这通常是我的做法:

1) 应用程序使用像ASIHttpRequest库这样的库向Web服务发出HTTP POST请求。(注意,对于后端,我使用Symfony Web框架编写了我的Web服务)

2) 应用程序发送JSON响应。

例如:

{ data { name: bob age: 20 } }

3) 使用JSONKit或ASIHttpRequest提供的JSON解析器解析JSON,并将JSON服务器响应转换为NSDictionary。

NSDictionary *data = [[request responseString] objectFromJSONString];

4) 现在是否在应用程序上存储数据取决于应用程序的性质。如果应用程序是要搜索本地餐厅,则可能不想保留返回结果的本地副本,因为应用程序的性质是搜索餐厅。

然而,如果您有一个登录系统,从用户帐户下载用户的家庭作业,则可能会在设备上本地存储这些数据。

这就是Core Data的作用,您可以构建与服务器模型相同的模型,并在服务器和客户端模型之间进行简单的一对一映射。

希望这有所帮助。


2

请查看Rest kit

RestKit是一个针对iOS的Objective-C框架,旨在使与RESTful Web服务的交互变得简单、快速和有趣。它将干净简单的HTTP请求/响应API与强大的对象映射系统相结合,从而减少了编写代码的量。

它还支持将远程加载的对象直接持久化到本地存储中。


你的链接中,Restkit 拼写错误 ;) - rdurand

2

Parse.com的API是RESTful的,可以为数据库处理数百万小时的样板代码构建。虽然我不在他们工作,但我确实喜欢这项服务。


1

对于#1,helios.io可以解决问题。从GitHub的docs中,

为了保持数据模型和REST webservices同步,您可以将其链接到您的Helios应用程序:

$ helios link path/to/DataModel.xcdatamodel

这将在您的Xcode和Helios项目中创建数据模型文件之间的硬链接,对其中一个文件所做的任何更改都将影响两个文件。下次启动服务器时,Helios会自动迁移数据库以创建表并插入列以适应任何新实体或属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接