1.字典跟模型的优缺点比较:
1>字典在使用key的时候Xcode不会有提示,容易出错,模型就不会
2>①所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业
②模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性
③使用模型访问属性时,编译器会提供一系列的提示,提高编码效率
以上仅供参考,可以直接秒下面的代码注释
2.字典转模型
1.>首先要有一个plist文件,将字典中的元素添加到plist文件中
注意:plist文件应该是创建的NSArray包含NSDictionary,NSDictionary包含NSString
2.>接下来应该在model文件夹创建新的文件并在.h文件中添加两个方法
+(instancetype)appWithDict: (NSDictionary*)dict;//app是对应的属性名
-(instancetype)initWithDict: (NSDictionary*)dict;
3>在新创建的文件中实现。
+(instancetype)appWithDict:(NSDictionary*)dict
{
return[[self alloc]initWithDict:dict];
}
-(instancetype)initWithDict:(NSDictionary*)dict
{
if(self= [super init]) {
self.name= dict[@"name"];
self.icon= dict[@"icon"];
}
returnself;
}
4>在viewController中添加一个数组属性的变量,然后在将字典转模型
//声明成员变量
@property(strong,nonatomic)NSArray*shops;
//实现对应方法
-(NSArray*)shops
{
//初始化数组
if(_app == nil) {
//把对应路径下的plist文件的字典数据赋值给一个数组对象
NSArray *dicArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil]];
/**
*将dictArray中所有字典转为模型对象,首先定义一个可变数组,用来保存字典对象
*/
NSMutableArray*appArray = [NSMutableArray array];
/**
*利用for in遍历数组的字典元素
*/
for (NSDictionary * dict in dicArray) {
//类方法,将字典元素赋值给app对象
CZAppModel * app = [CZAppModel appWithDict:dict];
//将app对象赋值给tempArray临时的可变数组
[tempArray addObject:app];
}
_apps = tempArray;
}
//最后返回
return _apps;
@end
我们可以简单理解为:把之前的数组中的字典抽取出来,创建模型对象,然后把这些模型放到一个新的数组中,通过调用这个数组,进而使用其中的模型。