用模型取代字典數(shù)組的好處
- 使用字典的弊端
- 一般情況下設(shè)置字典數(shù)據(jù)和取出字典數(shù)據(jù)都得使用字符串類型的"key"翩剪,編寫這些"key"時,Xcode沒有智能的提示朗兵,只能手動的去敲那些字符串
比如
```objc
NSString *name = dict[@"name"];
dict[@"name"] = @"jordan";
```
如果手敲字符串key茴丰,key就很容易寫錯,此時編譯器是不會有任何的警告和報錯大审,則會造成數(shù)據(jù)存取和讀取出錯
-
模型的優(yōu)點
- IOS中的模型,其實就是數(shù)據(jù)模型座哩,專門用于存放數(shù)據(jù)的對象
- 模型設(shè)置數(shù)據(jù)和讀取都是通過其屬性徒扶,屬性名稱如果寫錯,編譯器會做出警告或者報錯根穷,提示修復(fù)數(shù)據(jù)的正確性
- 同樣姜骡,使用模型訪問屬性時,Xcode會有數(shù)據(jù)提示屿良,可以提高編寫代碼的效率
NSString *name = dict.name; dict.name = @"jordan";
字典轉(zhuǎn)模型過程
- 字典轉(zhuǎn)模型的過程最好將其封裝在模型內(nèi)部
- 在@interface中連線數(shù)組
@interface property (strong, nanotomic) NSArray * shop;
- 模型應(yīng)該提供一個可以傳入的字典參數(shù)的構(gòu)造方法
- 新建cocoa touch class 繼承于NSObject圈澈,設(shè)置商品的名稱和圖片屬性
- .h中傳入兩個構(gòu)造方法
import <Foundation/Foundation.h>
@interface shop : NSObject
@interface property (strong, nanotomic) NSString * name;
@interface property (strong, nanotomic) NSString * icon;
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)initWithDict:(NSDictionary *)dict尘惧;
@end
```
-
.m中實現(xiàn)構(gòu)造方法
#import "shop.h" @ implementation shop -(instancetype)initWithDict:(NSDictionary *) dict { if (self = [super init]) { self.name = dict@"name"; self.icon = dict@"icon"; } return self; } +(intancetype)shopWithDict:(NSDictionary *)dict { return [[self alloc] initWithDict:dict]; } @end
控制器中加載字典模型
-
使用懶加載字典模型
pragma mark - 加載字典數(shù)組
- (NSArray *) shops{
if (_shop == nil){
//1康栈、加載一個字典數(shù)組
NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"]];
//2、將字典數(shù)組轉(zhuǎn)換為字典模型
NSMutableArray *shopArray = [NSMutableArray array];
for (NSDictionary *dict in dictArray){
shop *s = [shop shopWithDict:dict];
[shopArray addObject:shop];
}
//3喷橙、賦值
_shop = shopArray;
}
return _shops;
}
```