1.字典跟模型的優(yōu)缺點(diǎn)比較:
1>字典在使用key的時(shí)候Xcode不會(huì)有提示,容易出錯(cuò),模型就不會(huì)
2>①所謂模型圆存,其實(shí)就是數(shù)據(jù)模型,專門用來存放數(shù)據(jù)的對(duì)象仇哆,用它來表示數(shù)據(jù)會(huì)更加專業(yè)
②模型設(shè)置數(shù)據(jù)和取出數(shù)據(jù)都是通過它的屬性沦辙,屬性名如果寫錯(cuò)了,編譯器會(huì)馬上報(bào)錯(cuò)讹剔,因此油讯,保證了數(shù)據(jù)的正確性
③使用模型訪問屬性時(shí),編譯器會(huì)提供一系列的提示延欠,提高編碼效率
2.字典轉(zhuǎn)模型的過程(中間加了一些個(gè)人想法)
1.>首先需要?jiǎng)?chuàng)建一個(gè)plist文件陌兑,將字典中的元素添加到plist文件中
注意:應(yīng)該是創(chuàng)建的NSArray包含NSDictionary,NSDictionary包含NSString
2.>接下來應(yīng)該在model文件夾創(chuàng)建新的文件并在.h文件中添加兩個(gè)方法
+(instancetype)****WithDict: (NSDictionary*)dict;
-(instancetype)initWithDict: (NSDictionary*)dict;
3>在新創(chuàng)建的文件中實(shí)現(xiàn)由捎。
+(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中添加一個(gè)數(shù)組屬性的變量兔综,然后在將字典轉(zhuǎn)模型(最重要的一步)
@property(strong,nonatomic)NSArray*shops;
。
狞玛。
软驰。
-(NSArray*)shops
{
//初始化數(shù)組
if(_shops==nil) {
//獲取plist的全路徑
NSString*path = [[NSBundlemainBundle]pathForResource:@"shop.plist"ofType:nil];
//加載數(shù)組
NSArray*dictArray = [NSArrayarrayWithContentsOfFile:path];
/**
*將dictArray中所有字典轉(zhuǎn)為模型對(duì)象
*/
NSMutableArray*shopArray = [NSMutableArrayarray];
/**
*利用for in遍歷數(shù)組的字典
*/
for(NSDictionary*dictindictArray) {
//創(chuàng)建模型對(duì)象
YHShop*shop = [YHShopshopWithDict:dict];
//添加模型對(duì)象到數(shù)組
[shopArrayaddObject:shop];
}
_shops= shopArray;
}
return_shops;//這里返回的就是一個(gè)包含模型的數(shù)組
}
@end
5.將之前在使用數(shù)組的地方直接改為模型:例如:
YHShop*shopInfo =self.shops[index];//把模型數(shù)據(jù)給一個(gè)新的對(duì)象
imageView.image= [UIImageimageNamed:shopInfo.icon];
☆比較簡(jiǎn)單的理解方式:把之前的數(shù)組中的字典抽取出來,創(chuàng)建模型對(duì)象心肪,然后把這些模型放到一個(gè)新的數(shù)組中锭亏,通過調(diào)用這個(gè)數(shù)組,進(jìn)而使用其中的模型硬鞍。