一、摘要
在数据模型中,读取数据一直是一个比较头疼的问题,以读取plist文件为例,需要一层层往内读,如果自己写代码及其耗时而且容易出错,而使用第三方库,一句代码就可以搞定。
二、实例
以shop.plist为例
1.传统方法
//重写get方法
- (NSMutableArray *)shopArray{
if (_shopArray == nil) {
//1.获取plist文件的路劲
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Shop" ofType:@"plist"];
//2.读取内容
//a.数组
NSArray *contents = [NSArray arrayWithContentsOfFile:filePath];
//b.字典
//NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath];
//对数据进行解析/封装
//如果不解析数据 访问某个数据可能就比较麻烦
//model类 name price
self.shopArray = [NSMutableArray array];
for (NSDictionary *dic in contents) {
//先读取dic的数据
NSString *name = [dic objectForKey:@"name"];
NSString *price = [dic objectForKey:@"price"];
//需要将这个字典封装为一个具体的对象
ShopModel *model = [[ShopModel alloc] init];
model.name = name;
model.price = price;
[self.shopArray addObject:model];
}
}
return _shopArray;
}
2.使用第三方库(MJExtension)
读取plist文件放到数组
//懒加载
- (NSMutableArray *)shopModelsArr{
if (_shopModelsArr == nil) {
_shopModelsArr = [NSMutableArray array];
//使用第三方库
//模型里面的属性名必须和plist文件的key相同
self.shopModelsArr = [ShopModel mj_objectArrayWithFilename:@"shop.plist"];
}
return _shopModelsArr;
}
从数组取出来使用
ShopModel *sm = [self.shopModelsArr objectAtIndex:0];
注意:1⃣️需要导入#import "MJExtension/MJExtension.h"
2⃣️创建虚拟文件夹:New Group Without Floder