MTLParseAdapter 0.1.0

MTLParseAdapter 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 开源协议
发布最后发布2015年2月

Mike Lazer-Walker维护。



 
依赖关系
Asterism~> 1.0
Mantle~> 1.5
Parse~> 1.6
 

  • 作者:
  • Mike Walker

MTLParseAdapter 是一个小类,允许您使用 Mantle 将您的应用模型对象轻松地序列化和反序列化到/从 Parse 的 PFObject 类。

您可能为什么使用这个?

Parse 的 iOS 库鼓励您以两种方式之一来建模数据。您可以使用 PFObject 作为键值存储,类似于使用 NSDictionary,但这样做您将失去许多属性友好性和类型安全。作为替代方案,您可以制作自己的域对象,使其成为 PFObject 的子类,但这存在一些问题。

  • 您不能从继承了不同类的子类中获得功能(如 Mantle 的 MTLModel)。
  • 这使得每个模型对象都了解如何持久化到 Parse,这根据您的应用程序结构可能违反了 单一责任原则
  • Parse 的 SDK 实现不是开源的,这使得调试可能出现的问题更加困难。在对象图中最小化 PFObject 的存在可以有助于减少任何潜在的不便。
  • 如果您想切换到使用不同的后端服务,无论是不同的后端即服务还是自己的服务器,从您的应用程序中删除 Parse 将涉及更改您的客户端域对象。

MTLParseAdapter 提供了一种避免这些问题的方法。它允许您将域对象建模为 Mantle 的 MTLModel 对象,并根据需要将它们序列化为 PFObject 并反向转换。

这是基于 Mantle 中的 JSON 序列化功能构建的。如果您的域对象已经是符合 MTLJSONSerializingMTLModel 子类,则不需要进行任何额外的工作,以便 MTLParseAdapter 可以将您的对象转换为和从 PFObject。如果您之前使用过 MTLJSONAdapter,则 MTLParseAdapter 将非常熟悉。

使用方法

为了将对象序列化和反序列化为 PFObject,它们需要 (a) 继承 MTLModel 并 (b) 实现 MTLJSONSerializing 协议。更多有关此信息,请参阅 Mantle 文档

完成此操作后,您可以使用 MTLParseAdapter 转换您的模型对象。

User *user = [[User alloc] init];
PFObject *parseObject = [MTLParseAdapter parseObjectFromModel:user error:&error];
PFObject *parseObject; // Fetched via a PFQuery, for instance
User *user = [MTLParseAdapter modelOfClass:User.class 
                            fromParseObject:parseObject
                            error:&error];

如果您的 Parse 类名与您的 Objective-C 对象类的名称相同,则在从 PFObject 反序列化时可以省略模型类。

PFObject *parseObject = [PFObject objectWithClassName:@"User"];
User *user = [MTLParseAdapter modelFromParseObject:parseObject error:&error];

存在等效的方法可以将相同类的多个对象的数组转换为对象。

User *user1 = [[User alloc] init];
User *user2 = [[User alloc] init];
NSArray *users = @[user1, user2];
PFObject *parseObject = [MTLParseAdapter parseObjectsFromModels:users error:&error];
PFObject *parseObject1 = [PFObject objectWithClassName:@"User"];
PFObject *parseObject2 = [PFObject objectWithClassName:@"User"];
NSArray *parseObjects = @[parseObject1, parseObject2];
User *user = [MTLParseAdapter modelsOfClass:User.class 
                            fromParseObjects:parseObjects
                            error:&error];

如上所述,还有一个 modelsFromParseObjects: 方法,可以根据每个 PFObjectparseClassName 推断其 Objective-C 类。

安装

它包含了依赖项 Mantle 和 Parse。

作者

Mike Lazer-Walker

[email protected]

@lazerwalker

许可

MTLParseAdapter 按照MIT许可证提供。有关更多信息,请参阅 LICENSE 文件。