美文网首页
模型 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