3

我正在开发一个 iPad 应用程序,它连接到后端的 Django 服务器。服务器主要是数据库之上的一个 REST API(这是用 TastyPi 完成的,为了记录)。

由于我是 iOS 新手,因此我正在尝试了解开发此功能的最佳方式。

所以有几个相关的问题:

  1. 是否有一个库可以简化在您的代码中制作“模型”以镜像服务器上的模型的工作?

我想像 Django 的 ORM 之类的东西,它允许您在 Objective C 中定义对象,这些对象一对一地映射到 REST Api 提供给您的对象。

该库可以抽象本地对象和服务器上的对象之间的所有缓存和转换。

  1. 如果这种库不存在,是否有适合此类项目的一组最佳实践?例如,我什至应该有反映数据库的本地对象吗?我应该有一个类来处理处理 API 的所有代码,还是应该在作为 API 一部分的许多不同对象中编写请求?

简而言之,我在哪里可以学习编写由暴露数据库的 REST Api 支持的 iOS 应用程序的“正确”方法?最好是教程,而不是查看现有项目的代码。

4

4 回答 4

4

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

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

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

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

例如

{数据{名称:鲍勃年龄:20}}

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

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

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

但是,如果您有一个登录系统,可以从他们的帐户下载用户的家庭作业,那么您可能会将这些数据存储在本地设备上。

这就是 Core Data 的用武之地,您构建复制服务器模型的模型,并在服务器和客户端模型之间进行简单的 1 对 1 映射。

希望有帮助。

于 2012-10-24T15:02:22.080 回答
2

查看休息套件

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

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

于 2012-10-24T12:18:04.227 回答
2

Parse.com api 是 RESTful 的,负责为数据库构建数千小时的样板代码。我不为他们工作,但我确实喜欢这项服务。

于 2012-10-24T12:25:00.547 回答
1

对于 #1,helios.io可以解决问题。从 github 上的文档

为了使您的数据模型和 REST Web 服务保持同步,您可以将其链接到您的 helios 应用程序:

$ helios 链接路径/到/DataModel.xcdatamodel

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

于 2014-10-27T22:27:21.490 回答