美文网首页
2.1 JSONModel实例化对象

2.1 JSONModel实例化对象

作者: 草根小强 | 来源:发表于2019-04-18 13:52 被阅读0次

    JSONModel实例化对象

    #import "ViewController.h"
    #import "Person.h"
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        //JSONModel 是一个第三方库,可以帮我们快速实例化对象,并赋值
        
        //如果用JSONModel ,通过一个字典,来实例化一个对象,那么这个字典可以包含多余的,在模型里面没有声明的key
        //用JSONModel 需要保证,属性里面声明的key,在字典里面必须都有包含,除非》》这个key是Optional的
       
        //Optional 只能修饰OC对象,不能修饰基本数据类型
        
        //JSONModel 会同时对里面的子模型进行实例化
        
        NSDictionary *dict = @{
                             @"name":@"小强",
                             @"age":@20,
                             @"sex":@1,
                             @"id":@12345,
                             @"dog":@{
                                     @"name":@"小强",@"kind":@"单身狗",@"age":@1
                                     },
                             @"dogs":@[
                                     @{
                                         @"name":@"李四",@"kind":@"单身狗"
                                         },
                                     @{
                                         @"name":@"王五",@"kind":@"单身狗"
                                         },
                                     @{
                                         @"name":@"赵四",@"kind":@"单身狗"
                                         },
                                     @{
                                         @"name":@"张三",@"kind":@"单身狗"
                                         },
                                     
                                     ]
                               };
        
        
        //通过一个字典,去实例化一个模型
        
        Person *p = [[Person alloc] initWithDictionary:dict error:nil];
        NSLog(@"%@",p);
        
    }
    @end
    
    #import "JSONModel.h"
    @class Dog;
    //在这里,声明一个空协议
    
    //要求:协议的名字必须是Dog
    @protocol Dog
    
    
    
    @end
    
    @interface Person : JSONModel
    @property (nonatomic,copy)NSString<Optional>*name;
    
    // 用Optional来修饰
    @property (nonatomic,assign)NSNumber<Optional> *age;//NSNumber是数字对象
    
    @property (nonatomic,copy)NSString* ID;//id
    
    
    ////需求1: 一个人样了一条狗
    @property (nonatomic,strong)Dog*dog;
    
    //需求2:一个人,养了数条狗
    // 我们需要告诉JSONMOdel 这个数组中每个元素的是什么类型的
    
    //1. 申明一个空的协议,协议的名字需要是数组中元素类型的类名
    //2.
    
    #warning //1. 申明一个空的协议,协议的名字需要是数组中元素类型的类名  //2.我们需要告诉JSONMOdel 这个数组中每个元素的是什么类型的
    @property (nonatomic,strong)NSArray<Dog>*dogs;
    
    @end
    
    
    
    
    
    
    #warning 一个文件里面可以声明很多类,但是声明了类之后,必须要写实现
    @interface Dog : JSONModel
    //
    @property (nonatomic,copy)NSString*name;
    @property (nonatomic,copy)NSString*kind;
    @end
    
    #import "Person.h"
    
    @implementation Person
    
    
    // 键映射
    +(JSONKeyMapper *)keyMapper{
        
        //就是属性里面的属性名字和字典里面的键不一样  所以我们就要用键映射
    //    格式  键是字典的键  值是属性名称
        
        return [[JSONKeyMapper alloc] initWithDictionary:@{
                                                          
                                                           @"id":@"ID"
                                                          }];
    }
    
    @end
    
    //对应Dog的实现
    @implementation Dog
    //
    //
    //
    @end
    
    JSONModel实例化对象.png

    相关文章

      网友评论

          本文标题:2.1 JSONModel实例化对象

          本文链接:https://www.haomeiwen.com/subject/qpwzwqtx.html