首先在iOS開發中,很多時候我們都會用到字典->模型的事例,這裏所說的模型 就是數據模型。
1. 字典轉模型數據的過程:
1>首先我們先有一個plist文件,也就是數據存儲的類型 將字典中的元素添加到plist文件中去
2 >接下來我們就應該創建我們需要的模型類,並在.h聲明文件裏設置屬性和構造我們要用的方法 和plist加載的數據
1. 設置屬性 構造方法
/* 1 字典實例化成員變量 2.字典實例化對象的類方法,又稱爲工廠方法*/
-(instancetype) initWithDict:(NSDictionary *)dict;
+(instancetype) ***WithDict:(NSDictionary *)dict;
// 從plist加載數據
+(NSArray *)XXX;// XXX一般都是和plist文件名字一樣 便於明瞭
2.實現構造的方法
-(instancetype) initWithDict:(NSDictionary *)dict{
if (self == [super init]) {
// self.name = dict[@"name"];
// self.icon = dict[@"icon"];
// self.intro = dict[@"intro"]; (最基本的)
/* KVC (key value coding)鍵值編碼
// 第一個參數是字典的數值 第二個參數是類的屬性
[self setValue:dict[@"name"] forKey:@"name"];
[self setValue:dict[@"icon"] forKey:@"icon"];
[self setValue:dict[@"intro"] forKey:@"intro"];*/
//通過setValuesForKey方法來完成
[self setValuesForKeysWithDictionary:dict];
}
return self ;
}
+(instancetype) heroWithDict:(NSDictionary *)dict{
return [[self alloc]initWithDict:dict];
}
//plist數據交個模型處理數據
+(NSArray *)XXX{
//獲得plist路徑
NSString *path = [[NSBundle mainBundle]pathForResource:@"XXX.plist" ofType:nil];
NSArray *array = [NSArray arrayWithContentsOfFile:path];
//創建數組用於接收數據
NSMutableArray *tempArray = [NSMutableArray array];
//利用 for in 遍歷數組的字典
for (NSDictionary *dict in array) {
//### 自己創建的類名字
// 創建模型對象並把他添加到數組中
[tempArray addObject:[### ***WithDict:dict]];
}
//這裏返回的是包含plist文件裏的模型數組
return tempArray;
}
3-> 然後就在我們的viewController 中添加數組的屬性變量,然後 實行懶加載的方法把數據傳遞
@property(nonatomic,strong) NSArray *XXX;
//懶加載 數據
-(NSArray *)XXX{
if (_XXX == nil) {
_XXX = [### XXX];
}
return _XXX;
}
4-> 講用到數組的地方轉改爲模型到這裏 也就基本算完成了字典轉模型的大致思路。### *hero = _XXX[indexPath.row];
// 這時候就能使用裏面的屬性模型值了
cell.imageView.image = [UIImage imageNamed:hero.icon];
字典轉模型優缺點比較:
1.> 字典在使用key時候 用模型訪問屬性,若出現錯誤 編譯器不會有提示錯誤的,但是 轉換成模型後 就能提示 提高編碼的速率
2.> 模型也就是我們說的數據模型,主要用於存放數據的對象,用模型表示數據顯得我們更加專業(裝逼 滿分)