将字典NSDictionary对象转为模型来使用,大大提高了程序的编写效率和扩展性,降低了程序发生错误的概率,其优缺点如下:
使用字典的坏处:
一般情况下,设置数据和去除数据都是用"字符串类型的key",编写这些key时,编译器不会有任何友善提示,需要手敲:
dict[@"name"] = @"Jack";
NSString *name = dict[@"name"];</span>
手敲字符串key, key容易写错
Key如果写错了,编译器不会有任何警告和报错,造成设错数据和取错数据
使用模型的好处
所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业
模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器马上会报错,因此,保证了数据的正确性.
使用模型访问属性时,编译器会提供一系列的提示,提高编码效率
app.name = @"Jack”;
NSString *name = app.name;
其中,字典转模型的过程最好封装在模型内部
模型应该提供一个可以传入字典参数的构造方法
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)xxxWithDict:(NSDictionary *)dict;
下图为字典转模型的过程:
相关代码如下:
/**
* appsArray的Get()方法
*
* @return 解析数据后的appsArray数组
*/
- (NSMutableArray *)appsArray {
if (nil == _appsArray) {
NSMutableArray *appArray = [[NSMutableArray alloc] init];
// 获取plist全路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];
// 取出字典数组
NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
for (NSDictionary *dict in dictArray) {
App *app = [App appWithDict:dict];
[appArray addObject:app];
}
_appsArray = appArray;
}
return _appsArray;
}