ios - 抽象解析对象?

标签 ios parsing model abstraction

我想在我的应用程序中使用 Parse (parse.com)。 Parse 使用 PFObject 模型。我想在我的代码中使用我自己的模型(这样它就不依赖于解析)。如果可能的话,我想设计我的应用程序,以便我可以尽可能无缝地用另一个云服务替换解析。

这是个好主意吗?什么是抽象模型存储的最佳方式,以便我的应用程序中没有(或最少)Parse 代码痕迹?

也许使用适配器设计模式将解析对象映射到我自己的对象?这应该是一个独立的类还是模型逻辑的一部分?

如果有人尝试过这样的事情,我想听听您的想法。我应该直接在我的代码中使用解析模型吗?或者也许是一个单例工厂来根据解析对象生成我的模型?

任何提示/想法/评论?

最佳答案

我找到了管理它的相对简洁的方法。

基本上我已经创建了一个名为 NPDictionaryRepresenting 的协议(protocol),类可以遵守该协议(protocol)以指定它们应如何转换为字典或从字典初始化。

@protocol NPDictionaryRepresenting <NSObject>
- (NSDictionary *)dictionaryRepresentation;
+ (id)objectWithDictionaryRepresentation:(NSDictionary *)dictionary;
@end 

我需要存储在 Parse 中的每个模型都将符合这一点并实现它们自己的自定义行为。该协议(protocol)是通过使用字典抽象出来的,因此它不以任何方式依赖于 Parse。

然后我实现了一个 NPNetworkAdapter 基类来处理所有网络存储。我还实现了一个继承自 NPNetworkAdapter 的 NPParseNetworkAdapter 类。这是唯一了解 Parse 的类。它的接口(interface)处理符合 NPDictionaryRepresenting 的对象。解析网络适配器能够通过提取我的对象的字典表示来创建 PFObjects。相反,它能够获取 PFObjects 并通过使用字典实例化它们来返回我自己的模型。

这个实现的缺点是它不能很好地处理对象关系(但我正在努力)。

如果有人对此方法有任何意见,我很乐意听取他们的意见。

关于ios - 抽象解析对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14310099/

相关文章:

java - RSS Feed - 在 JAVA 中的描述标签内解析/提取 src 图像标签

regex - 在clojure中读取制表符分隔的文件

php - 拉维尔 5.3 : Can not access anymore the admin dashboard

iphone - iPhone/iPad 中的指南针真实航向

ios - 使用一个 Storyboard和一个 Storyboard将 iPad 应用程序移植到 iPhone

ios - 手势识别器并不总是被触发

c++ - 关于后缀到中缀解析器的建议

c++ - Qt:将 C++ 中的列表连接到 QML 中的 ListView

Django 模型 : adding a new field with unique=True and migrate will fail due to entering a same value to existing records

当应用程序进入后台时,AppDelegate 上的 IOS Vars 会被释放吗?