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);
二、使用第三方
上面的写法比较简单,不能满足我们的需求,一般使用第三方框架。用的比较多的有YYModel和MJExtension
这2种我都用过,个人感觉MJExtension用起来友好一点,但是YYModel的性能比MJExtension好。
用法和例子在gitHUB上都有,这里就不在写了
参考文章:
在IOS中 使用模型和字典的区别
网友评论