假设有一个flags.plist文件
images/loading.gif' data-original="http://images2015.cnblogs.com/blog/938268/201604/938268-20160425200103002-746732291.png" width="325" height="144" />
ZWFlags.h
1 #import <Foundation/Foundation.h> 2 @interface ZWFlags : NSObject 3 /** 国旗名字 */ 4 @property (strong, nonatomic)NSString *name; 5 6 /** 国旗图片 */ 7 @property (strong, nonatomic)NSString *icon; 8 9 + (instancetype)flagsWithDict:(NSDictionary *)dict;10 11 @end
ZWFlags.m
#import "ZWFlags.h"@interface ZWFlags()@end@implementation ZWFlags+ (instancetype)flagsWithDict:(NSDictionary *)dict{ ZWFlags *flags = [[self alloc] init]; //此处的self不能用ZWFlags flags.name = dict[@"name"]; flags.icon = dict[@"icon"]; //此处两句也可以直接写成[flags setValuesForKeysWithDictionary:dict]; return flags;}@end
在需要使用的控制器中
第一种方式:
1 #import "ViewController.h" 2 #import "ZWFlags.h" 3 /** 所有国旗的数据 */ 4 @property (strong, nonatomic)NSMutableArray *flags; 5 6 @end 7 8 @implementation ViewController 9 10 - (NSMutableArray *)flags11 {12 if (_flags == nil) {13 //装flag模型14 _flags =[NSMutableArray array];15 // 加载plist数据16 NSString *path = [[NSBundle mainBundle] pathForResource:@"flags.plist" ofType:nil];17 NSArray *arr = [NSArray arrayWithContentsOfFile:path];18 // 字典转模型19 for (NSDictionary *dict in arr) {20 ZWFlags *flag = [ZWFlags flagsWithDict:dict];21 [_flags addObject:flag];22 }23 }24 return _flags;25 }
第二种方式:
1 #import "ViewController.h" 2 #import "ZWFlags.h" 3 /** 所有国旗的数据 */ 4 @property (strong, nonatomic)NSArray *flags; 5 6 @end 7 @implementation ViewController 8 9 - (NSArray *)flags10 { 11 if (_flags == nil) {12 //加载plist文件13 NSString *path = [[NSBundle mainBundle] pathForResource:@"flags.plist" ofType:nil];14 NSArray *dictArr = [NSArray arrayWithContentsOfFile:path];15 16 //字典转模型17 NSMutableArray *flagArray = [NSMutableArray array];18 for (NSDictionary *dict in dictArr) {19 ZWFlags *flag = [ZWFlags flagsWithDict:dict];20 [flagArray addObject:flag];21 }22 _flags = flagArray;23 }24 return _flags;25 }
原标题:自学iOS开发小功能之四:懒加载中进行字典转模型(两种方式)
关键词:IOS