测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | 开源协议 |
发布最后发布 | 2015年2月 |
依赖关系 | |
Asterism | ~> 1.0 |
Mantle | ~> 1.5 |
Parse | ~> 1.6 |
MTLParseAdapter 是一个小类,允许您使用 Mantle 将您的应用模型对象轻松地序列化和反序列化到/从 Parse 的 PFObject
类。
Parse 的 iOS 库鼓励您以两种方式之一来建模数据。您可以使用 PFObject
作为键值存储,类似于使用 NSDictionary
,但这样做您将失去许多属性友好性和类型安全。作为替代方案,您可以制作自己的域对象,使其成为 PFObject
的子类,但这存在一些问题。
MTLModel
)。PFObject
的存在可以有助于减少任何潜在的不便。MTLParseAdapter
提供了一种避免这些问题的方法。它允许您将域对象建模为 Mantle 的 MTLModel
对象,并根据需要将它们序列化为 PFObject
并反向转换。
这是基于 Mantle 中的 JSON 序列化功能构建的。如果您的域对象已经是符合 MTLJSONSerializing
的 MTLModel
子类,则不需要进行任何额外的工作,以便 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:
方法,可以根据每个 PFObject
的 parseClassName
推断其 Objective-C 类。
它包含了依赖项 Mantle 和 Parse。
Mike Lazer-Walker
@lazerwalker
MTLParseAdapter 按照MIT许可证提供。有关更多信息,请参阅 LICENSE 文件。