标签:
- (NSArray *)appList { if (_appList == nil) { // appList保存的是字典=>模型 // _appList = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]]; NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]]; // 创建一个临时数组 NSMutableArray *arraM = [NSMutableArray array]; // 遍历数组,依次转换模型 for (NSDictionary *dict in array) { // 类方法可以快速实例化一个对象 // HMAppInfo *appInfo = [[HMAppInfo alloc] initWithDict:dict]; HMAppInfo *appInfo = [HMAppInfo appInfoWithDict:dict]; // NSString *str = [HMAppInfo appInfoWithDict:dict]; // NSLog(@"%d", str.length); [arraM addObject:appInfo]; } // 将临时数组为属性赋值 _appList = arraM; } return _appList; }
#import <Foundation/Foundation.h> @interface HMAppInfo : NSObject @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *icon; /** instancetype 主要用于在类方法实例化对象时,让编译器主动推断对象的实际类型 以避免使用id,会造成开发中不必要的麻烦,减少出错几率! instancetype是苹果在iOS7才开始主推的 C++11 auto 在swift语言中,绝大多数类的实例化,都不需要再指定类型 instancetype只能用于返回值使用!!!不能当做参数使用 */ /** 通常在写模型的实例化方法时,以下两个方法,都需要实现 */ /** 使用字典实例化模型 */ - (instancetype)initWithDict:(NSDictionary *)dict; /** 类方法可以快速实例化一个对象 */ + (instancetype)appInfoWithDict:(NSDictionary *)dict;
#import "HMAppInfo.h" @implementation HMAppInfo - (instancetype)initWithDict:(NSDictionary *)dict { // self 是 对象 self = [super init]; if (self) { // 用字典给属性赋值,所有与plist键值有关的方法,均在此处! self.name = dict[@"name"]; self.icon = dict[@"icon"]; } return self; } + (instancetype)appInfoWithDict:(NSDictionary *)dict { // self 是 class return [[self alloc] initWithDict:dict]; }
/** 通常在写模型的实例化方法时,以下两个方法,都需要实现 */
/** 使用字典实例化模型 */
- (instancetype)initWithDict:(NSDictionary *)dict;
/** 类方法可以快速实例化一个对象 */
+ (instancetype)appInfoWithDict:(NSDictionary *)dict;
标签:
原文地址:http://www.cnblogs.com/xiyang1/p/4531740.html