iOS开发 - JSONModel

JSONModel是一个数据模型的第三方库

1).它是一个抽象父类,不能直接使用,我们需要继承JSONModel来使用里面的功能

2).JSONMOdel已经实现了一个KVC的初始化方法:
    [[JSModel alloc] initWithDictionary:dict error:nil];

3).JSONMOdel已经实现了一个NSCoping和NSCoding协议,我们可以直接深拷贝和归档

4).JSONMOdel支持嵌套

1.
//协议 模型级联(模型内包含模型) 需要声明类似下面这样的协议
@protocol Model //协议名应该和模型的名称一样

@end

2.

<Model *>是我们在model里定义的协议
@property 

(nonatomic,strong)NSArray<Optional,Model>  *list;

//Optional 可选的 数据位为空就不赋值 不为空就赋值
//Ignore 忽略掉该属性

//当模型的属性和json数据里key值不同时,想给模型的属性进行赋值
+(JSONKeyMapper *)keyMapper{
    //字典__json数据的值:model里的数据
    return [[JSONKeyMapper alloc] initWithDictionary:@{@"channel_desc":@"desc"}];
}

//是否忽略某些属性 YES是忽略 NO是不忽略
+(BOOL)propertyIsIgnored:(NSString *)propertyName{  
    return NO;
}

//***********使用***********
NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];

Model1 * model = [[Model1 alloc] initWithDictionary:dic error:nil]; //针对最外层为字典

NSArray * arr = [Model1 arrayOfModelsFromDictionaries:dic[@"applications"]];  //最外层为数组 返回模型数组

NSArray * arr1 = [Model1 arrayOfModelsFromData:responseObject error:nil];  //参数为data数据 返回模型数组


//***********解档归档***********
//不需要遵守NSCoding协议 不需要实现协议里面的方法 直接就可以进行归档
        NSData * data = [NSKeyedArchiver archivedDataWithRootObject:mo1];

        //封装了拷贝 不需要遵守NSCopy协议 可以直接进行深拷贝
        Model1 * mo3 = [mo1 copy];

你可能感兴趣的:(iOS开发 - JSONModel)