美文网首页
模型 ios

模型 ios

作者: 快乐的tomato | 来源:发表于2018-12-19 20:01 被阅读10次

    what

    啥是模型?

    这个应该是在MVC开发中提出来的,以我的理解就是把返回的数据封装到一个对应的类里

    why

    • 使用字典的坏处
    • 一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲
      dict[@"name"] = @"Jack";
      NSString *name = dict[@"name"];
    • 手敲字符串key,key容易写错
    • Key如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据
    • 使用模型的好处
    • 所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业
    • 模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性
    • 使用模型访问属性时,编译器会提供一系列的提示,提高编码效率
      app.name = @"Jack”;
      NSString *name = app.name;

    how

    一、简单使用
    cityModel类
    .h

    #import <Foundation/Foundation.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface CityModel :  NSObject
    
    @property (nonatomic, copy) NSString *headImage;//
    @property (nonatomic, copy) NSString *titleName;//
    @property (nonatomic, copy) NSString *className;//
    @property (nonatomic, copy) NSString *detailUrl;//
    
    
    //将字典内的值赋给申明的相应属性
    - (instancetype)initWithDict:(NSDictionary *)dict;
    + (instancetype)modelWithDict:(NSDictionary *)dict;
    
    @end
    
    NS_ASSUME_NONNULL_END
    
    

    .m

    #import "CityModel.h"
    
    @implementation CityModel
    
    - (instancetype)initWithDict:(NSDictionary *)dict {
    
       //第一种
       if (self = [super init]) {
        
            self.headImage = dict[@"headImage"];
            self.titleName = dict[@"titleName"];
            self.className = dict[@"className"];
            self.detailUrl = dict[@"detailUrl"];
            
        }
        //第二种:使用setValuesForKeysWithDictionary要求类的属性必须在字典中存在,可以比字典中的键值多,但是不能少。
    //    [self setValuesForKeysWithDictionary:dict];
        
        return self;
    }
    
    + (instancetype)modelWithDict:(NSDictionary *)dict{
        
        return [[self alloc] initWithDict:dict];
    }
    
    @end
    

    实现

    //读取plsit文件,获取字典数组
        NSArray *dataArr = [PlistManager getDataArrayFromPlist:@"yufa"];
        for (NSDictionary *dic in dataArr) {
            
            CityModel *model = [CityModel modelWithDict:dic];
            [self.dataArr addObject:model];
            
        }
        
        NSLog(@"hahahh===%@",self.dataArr);
    

    二、使用第三方
    上面的写法比较简单,不能满足我们的需求,一般使用第三方框架。用的比较多的有YYModelMJExtension
    这2种我都用过,个人感觉MJExtension用起来友好一点,但是YYModel的性能比MJExtension好。
    用法和例子在gitHUB上都有,这里就不在写了

    参考文章:
    在IOS中 使用模型和字典的区别

    相关文章

      网友评论

          本文标题:模型 ios

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