3

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

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

我们当前的应用程序使用 CoreData 并将所有数据存储到 SQLite 数据库中。目前的工作流程如下所示:

Get Request Receive JSON Parse and map JSON to CoreData NSManagedObject Save Context

关于你们建议我将源代码作为库开源的路径,我有几个问题。

只是给一个粗略的概述:

我们有成员、组、事件、消息(最简单的)。

我一直在考虑解决这个问题的几种方法:

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

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

拥有知道如何从 API 检索自己的数据、将其解析为自己的属性的单独对象,然后在公共库之外的某个地方映射到 NSManaged 对象

这种方式听起来也不错,但是我有非常相似的对象具有非常相似的属性。

类别

我在这里读到了一些东西,我可以使用一个类别来添加方法, 将附加属性添加到带有辅助 .h .m 文件的 NSManagedObject 我不确定这是否有意义。

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

肯定是乱七八糟的。

欢迎提出更好的建议!

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

主要目标是:

抽象为可在其他应用程序中重用的请求库。为对象实施模式是一个加分项 如果他们不想,不要将人们锁定在 CoreData 模型中或根本不使用 CoreData。

提前感谢您的帮助!

4

1 回答 1

2

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

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

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

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

于 2012-08-23T21:16:14.473 回答