【发布时间】:2012-08-19 11:06:48
【问题描述】:
我这几天一直在努力解决这个问题,但似乎无法弄清楚如何最好地构建它。我绝不是 Objective C 方面的专家。
我们已经为我们的 Drupal 应用程序开发了一个 RESTful API,并且我们目前在 App Store 中有一个使用 ASIHTTPRequest 连接到它的 iOS 应用程序。但是,正如你们中的一些人可能知道的那样,它不再受支持。所以我们决定过渡到 AFNetworking,并希望以这样一种方式构建它,以便我们可以将它作为一个库开源以与我们的 API 一起使用。
我们当前的应用程序使用 CoreData 并将所有数据存储到 SQLite 数据库中。目前的工作流程如下所示:
获取请求 接收 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。
提前感谢您的帮助!
【问题讨论】:
标签: objective-c ios xcode api sdk