我已经解决这个问题几天了,似乎不知道如何最好地构建它。 我绝不是 Objective-C 方面的专家。
我们已经为 Drupal 应用程序开发了一个 RESTful API,目前我们在 App Store 中有一个 iOS 应用程序,它使用
ASIHTTPRequest
来连接它。 然而,正如你们中的一些人可能知道的那样,它不再受到支持。因此,我们决定过渡到 AFNetworking
,并希望以这样的方式构建它,以便我们可以将其作为库开源以与我们的 API 一起使用。
我们当前的应用程序正在使用 CoreData 并将传入 SQLite 数据库的所有数据存储起来。 目前的工作流程看起来像这样:
我有几个问题,关于你建议我以什么方式开源作为一个库。
只是给出一个粗略的概述:
我们有会员、群组、活动、消息(最简单的)。
我一直在考虑几种方法:
将
AFNetworking
API 调用和解析/映射方法添加到 NSManagedObject
。
我喜欢这个概念,但我不确定它是否有意义。 然后,核心数据模式成为 API 的模式,这很棒,但我担心的是 - 如果其他使用它的开发人员不想在他们的应用程序中使用核心数据怎么办?最重要的是,我不确定返回多个实例的方法会是什么样子。 例如,如果我有一个
NSManagedObject
组,我应该在哪里调用以获取组索引?另外,我们是否会将某人锁定在特定的核心数据模型中,这是一件好事吗?
拥有独立的对象,这些对象知道如何从 API 检索自己的数据,将其解析为自己的属性,然后在公共库之外的某个位置映射到
NSManaged
对象。
这种方式听起来也不错,但是我有非常相似的对象,具有非常相似的属性。
类别
我在这里读到了一些内容,我可以使用类别来添加方法 使用辅助 .h .m 文件向 NSManagedObject 添加其他属性 我不确定这是否有意义。
API 类、核心数据类和映射器类。
绝对混乱。
欢迎更好的建议!
我尝试查看其他一些示例,但我认为我没有足够的 Objective-C 知识来正确剖析它们。
主要目标是:
预先感谢您的帮助!
如果您尝试强制实施您的模式,您应该创建自己的模型类。 这可以通过仅子类 NSObject(或任何有意义的东西)或使用 Core Data/NSManagedObject 路由来完成。 如果您这样做,只需包含所需的文件即可。
就我个人而言,我会单独管理服务器调用。查看 Facebook SDK 3.0 可能会给您一些帮助。 基本上创建一个或多个类来处理您的服务器调用,解析信息,并以对您的用户有意义的方式将其传递回委托/块。
在这里您可以返回自定义对象(或它们的数组等)。您可以将这一切构建在任何网络层之上。 我是 AFNetworking 的粉丝,但任何一个都可以。只需包含子项目/子模块/等中所需的代码即可。 只要确保对您使用的所有库给予认可即可。
另一种选择是创建一个框架或静态库,将所有这些包装在一起,并且不允许其他开发人员更改您的内部代码。 希望这是一个开始。