关于YYModel 的学习

2017-09-15  本文已影响36人  跬步千里_LenSky

①     YYModel GitHub 地址

简单的json/dictionary 

// JSON:

{

"uid":123456,

"name":"Harry",

"created":"1965-07-31T00:00:00+0000"

}

// Model:

@interface User : NSObject

@property UInt64 uid;

@property NSString *name;

@property NSDate *created;

@end

@implementation User

@end

// 将 JSON (NSData,NSString,NSDictionary) 转换为 Model:

User *user = [User yy_modelWithJSON:json];

// 将 Model 转换为 JSON 对象:

NSDictionary *json = [user yy_modelToJSONObject];

//下面是为什么我们要使用YYModel 这个第三方库的原因!  以避免各种潜在的崩溃问题。

当 JSON/Dictionary 中的对象类型与 Model 属性不一致时,YYModel 将会进行如下自动转换。自动转换不支持的值将会被忽略,以避免各种潜在的崩溃问题

类型自动转换

Model 属性名和 JSON 中的 Key 不相同 的处理,也就是说我们有时候会遇到比如:id 关键字   或者   img_msg_ad_url  服务器的返回  然而 我们不想在model 中使用这样的 属性  

YYmodel  提供了类方法

//返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。

会返回一个字典对象 来替换原有的  json  key 

+ (NSDictionary *)modelCustomPropertyMapper {

return @{@"name" : @"n",

@"page" : @"p",

@"desc" : @"ext.desc",

//你可以把一个或一组 json key (key path) 映射到一个或多个属性。如果一个属性没有映射关系,那默认会使用相同属性名作为映射。

@"bookID" : @[@"id",@"ID",@"book_id"]};

}

//很多时候我们会遇到这样的问题 model 中包含一个数组 然后有model 在这里 YYModle 也提供了一个方法 能够快速的将  Model 包含Modle 的进行转换

model 中有数组的情况  容器类 的返回

// 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。

+ (NSDictionary *)modelContainerPropertyGenericClass {

return @{@"shadows" : [Shadow class],

@"borders" : Border.class,

@"attachments" : @"Attachment" };

}

上一篇 下一篇

猜你喜欢

热点阅读