2012-08-23 112 views
3

我一直在为此苦苦挣扎了好几天,似乎无法弄清楚如何最好地构造这个。我绝不是目标C的专家。开发适用于REST API的iOS SDK

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

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

Get请求 接收JSON 解析和地图JSON到CoreData NSManagedObject 保存上下文

我有什么路径你们几个问题,建议对我来说,开源作为图书馆。

只给一个粗略的概述:

我们有会员,团体,事件,消息(在其最简单的)。

有几种方法我一直在想的要对此:

添加AFNetworking API调用和解析/映射方法的NSManagedObject

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

有知道如何从一个API取回自己的数据,它的地方解析到自己的属性,然后出了公共图书馆的做映射到NSManaged对象

这样的声音分离的对象不错,但是我有非常相似的物体,它们的性质非常相似。

分类

我读的东西在这里,我可以用一个类来添加方法 add additional properties to NSManagedObject with secondary .h .m files 我不知道,即使是有道理的。

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

绝对凌乱。

更好的建议欢迎!

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

的主要目标是:

摘要向被重复使用在其他应用程序的请求库。 为对象强制执行架构是一个加号 不要将人员锁定到CoreData模型或根本不使用CoreData。

在此先感谢您的帮助!

回答

2

如果您试图执行您的模式,您应该创建自己的模型类。这可以通过NSObject的子类(或任何有意义的)来完成,或者通过Core Data/NSManagedObject Route来完成。如果你这样做,只需包含所需的文件。

就我个人而言,我会分开管理服务器调用。看看Facebook SDK 3.0可能会给你一些帮助。基本上创建一个或多个类来处理您的服务器调用,解析信息并将其传回给代理/块,这对您的用户是有意义的。

在这里您可以返回您的自定义对象(或它们的数组等)。您可以在任何网络层之上构建这一切。我是AFNetworking的粉丝,但任何工作。只需在子项目/子模块/等中包含所需的代码即可。只要确保把所有使用的库都归功于你。

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

+0

嗨,詹姆斯,感谢您的回应!我只想澄清几件事:我已经有一个核心数据模式,所以我可以扩展NSManagedObjects以在API上强制执行模式。但是你建议分开API调用的类,解析数据并返回一些扩展NSObject的东西。是否有可能翻转并扩展API调用类返回为托管对象的内容?对不起,我可能在这里错过了很多要点。我读了几次,并不能特别理解。你不介意把它分解一点(对于n00b :) – MrMaksimize

+0

围绕这一点,我认为它开始有意义。基本上,你说要创建几个模型 - 组,消息,用户等。然后有一个控制器/控制器,使api调用,解析器,并填充这些模型,然后返回它们。然后为NSManagedObjects播种,并根据模型将这些对象的数据填充到它们中。是对的吗? – MrMaksimize