为REST API开发iOS SDK

时间:2012-08-23 21:09:47

标签: objective-c ios xcode api sdk

我几天来一直在努力解决这个问题,似乎无法弄清楚如何最好地构建它。我绝不是Objective C的专家。

我们已经为Drupal应用程序开发了一个RESTful API,我们目前在App Store中有一个iOS应用程序,它使用ASIHTTPRequest连接到它。但是,正如你们中的一些人可能知道的那样,它不再得到支持。因此我们决定转换到AFNetworking,并希望以这样的方式构建它,以便我们可以将其作为库来开源以与我们的API一起使用。

我们当前的应用程序使用CoreData并存储所有进入SQLite数据库的数据。目前的工作流程看起来像这样:

获取请求 收到JSON 将JSON解析并映射到CoreData NSManagedObject 保存上下文

我有几个问题,你们建议我以什么方式开源作为库。

只是粗略概述:

我们有会员,团体,活动,消息(最简单)。

有几种方法我一直在考虑这个:

将AFNetworking api调用和解析/映射方法添加到NSManagedObject

我喜欢这个概念,但我不确定它是否有意义。然后核心数据模式成为API的模式,这很棒。但我担心的是 - 如果使用此功能的其他开发人员不想在他们的应用中使用核心数据呢?最重要的是,我不确定返回多个实例的方法会如何。例如,如果我有一个NSManagedObject组,我在哪里调用以获取组的索引?另外,我们是否将某人锁定到特定的核心数据模型中,这是一件好事吗?

拥有知道如何从API检索自己的数据的单独对象,将其解析为自己的属性,然后从公共库中的某个位置执行到NSManaged Objects的映射

这种方式听起来也不错,但后来我的类似物具有非常相似的特性。

分类

我在这里阅读了一些内容,我可以使用类别来添加方法 add additional properties to NSManagedObject with secondary .h .m files 我不确定这是否有意义。

API类,核心数据类和映射器类。

绝对凌乱。

欢迎提出更好的建议!

我试图查看其他一些例子,但我认为我没有足够的Objective C知识来正确剖析它们。

主要目标是:

摘要到可在其他应用程序中重复使用的请求库。 为对象强制执行模式是一个优点 如果他们不想,请不要将人员锁定到CoreData模型或使用CoreData。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果您尝试强制执行架构,则应创建自己的模型类。这可以通过子类NSObject(或任何有意义的东西)或者使用Core Data / NSManagedObject Route来完成。如果您这样做,只需包含所需的文件。

就个人而言,我会单独管理服务器调用。看一下Facebook SDK 3.0可能会给你一些帮助。基本上创建一个或多个类来处理服务器调用,解析信息,并以对用户有意义的方式将其传递给委托/块。

在这里,您可以返回自定义对象(或它们的数组等)。您可以在任何网络层之上构建所有对象。我是AFNetworking的粉丝,但任何都行不通。只需包含子项目/子模块/等中所需的代码。只需确保对您使用的所有库提供信用。

另一个选择是创建一个框架或静态库,将所有这些包装在一起,并且不允许其他开发人员更改您的内部代码。希望这是一个开始。