1.字典跟模型的优缺点比较:
1>字典在使用key的时候Xcode不会有提示,容易出错,模型就不会
2>①所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业
②模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性
③使用模型访问属性时,编译器会提供一系列的提示,提高编码效率
2.字典转模型的过程(中间加了一些个人想法)
1.>首先需要创建一个plist文件,将字典中的元素添加到plist文件中
注意:应该是创建的NSArray包含NSDictionary,NSDictionary包含NSString
2.>接下来应该在model文件夹创建新的文件并在.h文件中添加两个方法
+(instancetype)****WithDict: (NSDictionary*)dict;
-(instancetype)initWithDict: (NSDictionary*)dict;
3>在新创建的文件中实现。
+(instancetype)****WithDict:(NSDictionary*)dict
{
return[[selfalloc]initWithDict:dict];
}
-(instancetype)initWithDict:(NSDictionary*)dict
{
if(self= [superinit]) {
self.name= dict[@"name"];
self.icon= dict[@"icon"];
}
returnself;
}
4>在viewController中添加一个数组属性的变量,然后在将字典转模型(最重要的一步)
@property(strong,nonatomic)NSArray*shops;
。
。
。
-(NSArray*)shops
{
//初始化数组
if(_shops==nil) {
//获取plist的全路径
NSString*path = [[NSBundlemainBundle]pathForResource:@"shop.plist"ofType:nil];
//加载数组
NSArray*dictArray = [NSArrayarrayWithContentsOfFile:path];
/**
*将dictArray中所有字典转为模型对象
*/
NSMutableArray*shopArray = [NSMutableArrayarray];
/**
*利用for in遍历数组的字典
*/
for(NSDictionary*dictindictArray) {
//创建模型对象
YHShop*shop = [YHShopshopWithDict:dict];
//添加模型对象到数组
[shopArrayaddObject:shop];
}
_shops= shopArray;
}
return_shops;//这里返回的就是一个包含模型的数组
}
@end
5.将之前在使用数组的地方直接改为模型:例如:
YHShop*shopInfo =self.shops[index];//把模型数据给一个新的对象
imageView.image= [UIImageimageNamed:shopInfo.icon];
☆比较简单的理解方式:把之前的数组中的字典抽取出来,创建模型对象,然后把这些模型放到一个新的数组中,通过调用这个数组,进而使用其中的模型。