码迷,mamicode.com
首页 > 移动开发 > 详细

iOS-字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用

时间:2015-09-21 17:39:46      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:

一:Plist读取

技术分享
 1 /******************************************************************************/
 2 一:简单plist读取
 3 
 4 1:定义一个数组用来保存读取出来的plist数据
 5 @property (nonatomic, strong) NSArray *shops;
 6 
 7 2:使用懒加载的方式加载plist文件,并且放到数组中
 8 // 懒加载
 9 // 1.第一次用到时再去加载
10 // 2.只会加载一次
11 - (NSArray *)shops
12 {
13     if (_shops == nil) {
14         // 获得plist文件的全路径
15         NSString *file = [[NSBundle mainBundle] pathForResource:@"shops.plist" ofType:nil];
16         
17         // 从plist文件中加载一个数组对象
18         _shops = [NSArray arrayWithContentsOfFile:file];
19     }
20     return _shops;
21 }
22 
23 3:使用数组中的数据
24 // 设置数据
25 NSDictionary *shop = self.shops[index];
26 iconView.image = [UIImage imageNamed:shop[@"icon"]];
27 nameLabel.text = shop[@"name"];
28 
29 /******************************************************************************/
技术分享

二:字典转模型

技术分享
 1 二:字典转模型
 2 
 3 1:创建一个model类并且在里面创建对应的模型属性
 4 /** 名字 */
 5 @property (nonatomic, strong) NSString *name;
 6 /** 图标 */
 7 @property (nonatomic, strong) NSString *icon;
 8 
 9 
10 2:定义一个数组用来保存读取出来的plist数据
11 @property (nonatomic, strong) NSMutableArray *shops;
12 
13 
14 3:使用懒加载的方式加载plist文件,并且放到模型中
15 
16 // 懒加载
17 // 1.第一次用到时再去加载
18 // 2.只会加载一次
19 - (NSMutableArray *)shops
20 {
21     if (_shops == nil) {
22         // 创建"模型数组"
23         _shops = [NSMutableArray array];
24 
25         // 获得plist文件的全路径
26         NSString *file = [[NSBundle mainBundle] pathForResource:@"shops.plist" ofType:nil];
27 
28         // 从plist文件中加载一个数组对象(这个数组中存放的都是NSDictionary对象)
29         NSArray *dictArray = [NSArray arrayWithContentsOfFile:file];
30 
31         // 将 “字典数组” 转换为 “模型数据”
32         for (NSDictionary *dict in dictArray) { // 遍历每一个字典
33             // 将 “字典” 转换为 “模型”
34             Shop *shop = [[Shop alloc] init];
35             shop.name = dict[@"name"];
36             shop.icon = dict[@"icon"];
37 
38             // 将 “模型” 添加到 “模型数组中”
39             [_shops addObject:shop];
40         }
41     }
42     return _shops;
43 }
44 
45 
46 4:使用模型中的数据
47 // 设置数据
48 Shop *shop = self.shops[index];
49 iconView.image = [UIImage imageNamed:shop.icon];
50 nameLabel.text = shop.name;
51 
52 
53 /******************************************************************************/
技术分享

三:字典转模型疯转

技术分享
 1 二:字典转模型封装
 2 
 3 1:创建一个model类并且在里面创建对应的模型属性,定义两个模型方法
 4 /** 名字 */
 5 @property (nonatomic, copy) NSString *name;
 6 /** 图标 */
 7 @property (nonatomic, copy) NSString *icon;
 8 
 9 /** 通过一个字典来初始化模型对象 */
10 - (instancetype)initWithDict:(NSDictionary *)dict;
11 
12 /** 通过一个字典来创建模型对象 */
13 + (instancetype)shopWithDict:(NSDictionary *)dict;
14 
15 
16 2:模型方法的实现
17 - (instancetype)initWithDict:(NSDictionary *)dict
18 {
19     if (self = [super init]) {
20         self.name = dict[@"name"];
21         self.icon = dict[@"icon"];
22     }
23     return self;
24 }
25 
26 + (instancetype)shopWithDict:(NSDictionary *)dict
27 {
28     // 这里要用self
29     return [[self alloc] initWithDict:dict];
30 }
31 
32 3:定义一个数组用来保存读取出来的plist数据
33 @property (nonatomic, strong) NSMutableArray *shops;
34 
35 
36 4:使用懒加载的方式加载plist文件,并且放到模型中
37 // 懒加载
38 // 1.第一次用到时再去加载
39 // 2.只会加载一次
40 - (NSMutableArray *)shops
41 {
42     if (_shops == nil) {
43         // 创建"模型数组"
44         _shops = [NSMutableArray array];
45         
46         // 获得plist文件的全路径
47         NSString *file = [[NSBundle mainBundle] pathForResource:@"shops.plist" ofType:nil];
48         
49         // 从plist文件中加载一个数组对象(这个数组中存放的都是NSDictionary对象)
50         NSArray *dictArray = [NSArray arrayWithContentsOfFile:file];
51         
52         // 将 “字典数组” 转换为 “模型数据”
53         for (NSDictionary *dict in dictArray) { // 遍历每一个字典
54             // 将 “字典” 转换为 “模型”
55             XMGShop *shop = [XMGShop shopWithDict:dict];
56             
57             // 将 “模型” 添加到 “模型数组中”
58             [_shops addObject:shop];
59         }
60     }
61     return _shops;
62 }
63 
64 
65 5:使用模型中的数据
66 // 设置数据
67 XMGShop *shop = self.shops[index];
68 iconView.image = [UIImage imageNamed:shop.icon];
69 nameLabel.text = shop.name;
70 
71 
72 /******************************************************************************/
技术分享

四:自定义View

技术分享
  1 四:自定义View
  2 
  3 1:创建一个model类并且在里面创建对应的模型属性,定义两个模型方法
  4 /** 名字 */
  5 @property (nonatomic, copy) NSString *name;
  6 /** 图标 */
  7 @property (nonatomic, copy) NSString *icon;
  8 
  9 /** 通过一个字典来初始化模型对象 */
 10 - (instancetype)initWithDict:(NSDictionary *)dict;
 11 
 12 /** 通过一个字典来创建模型对象 */
 13 + (instancetype)shopWithDict:(NSDictionary *)dict;
 14 
 15 
 16 2:模型方法的实现
 17 - (instancetype)initWithDict:(NSDictionary *)dict
 18 {
 19     if (self = [super init]) {
 20         self.name = dict[@"name"];
 21         self.icon = dict[@"icon"];
 22     }
 23     return self;
 24 }
 25 
 26 + (instancetype)shopWithDict:(NSDictionary *)dict
 27 {
 28     // 这里要用self
 29     return [[self alloc] initWithDict:dict];
 30 }
 31 
 32 
 33 3:自定义一个View,引入模型类,并且创建模型类的属性
 34 
 35 @class XMGShop;
 36 
 37 /** 商品模型 */
 38 @property (nonatomic, strong) XMGShop *shop;
 39 
 40 
 41 4:实现文件中,定义相应的控件属性
 42 /** 图片 */
 43 @property (nonatomic, weak) UIImageView *iconView;
 44 
 45 /** 名字 */
 46 @property (nonatomic, weak) UILabel *nameLabel;
 47 
 48 5:实现自定义View的相应方法
 49 - (instancetype)init
 50 {
 51     if (self = [super init]) {
 52         // 添加一个图片
 53         UIImageView *iconView = [[UIImageView alloc] init];
 54         [self addSubview:iconView];
 55         self.iconView = iconView;
 56         
 57         // 添加一个文字
 58         UILabel *nameLabel = [[UILabel alloc] init];
 59         nameLabel.textAlignment = NSTextAlignmentCenter;
 60         [self addSubview:nameLabel];
 61         self.nameLabel = nameLabel;
 62     }
 63     return self;
 64 }
 65 
 66 /**
 67  * 这个方法专门用来布局子控件,设置子控件的frame
 68  */
 69 - (void)layoutSubviews
 70 {
 71     // 一定要调用super方法
 72     [super layoutSubviews];
 73     
 74     CGFloat shopW = self.frame.size.width;
 75     CGFloat shopH = self.frame.size.height;
 76     
 77     self.iconView.frame = CGRectMake(0, 0, shopW, shopW);
 78     self.nameLabel.frame = CGRectMake(0, shopW, shopW, shopH - shopW);
 79 }
 80 
 81 -(void)setShop:(XMGShop *)shop
 82 {
 83     _shop = shop;
 84     
 85     self.iconView.image = [UIImage imageNamed:shop.icon];
 86     self.nameLabel.text = shop.name;
 87 }
 88 6:定义一个数组用来保存读取出来的plist数据
 89 @property (nonatomic, strong) NSMutableArray *shops;
 90 
 91 7:使用懒加载的方式加载plist文件,并且放到模型中
 92 // 懒加载
 93 // 1.第一次用到时再去加载
 94 // 2.只会加载一次
 95 - (NSMutableArray *)shops
 96 {
 97     if (_shops == nil) {
 98         // 创建"模型数组"
 99         _shops = [NSMutableArray array];
100         
101         // 获得plist文件的全路径
102         NSString *file = [[NSBundle mainBundle] pathForResource:@"shops.plist" ofType:nil];
103         
104         // 从plist文件中加载一个数组对象(这个数组中存放的都是NSDictionary对象)
105         NSArray *dictArray = [NSArray arrayWithContentsOfFile:file];
106         
107         // 将 “字典数组” 转换为 “模型数据”
108         for (NSDictionary *dict in dictArray) { // 遍历每一个字典
109             // 将 “字典” 转换为 “模型”
110             XMGShop *shop = [XMGShop shopWithDict:dict];
111             
112             // 将 “模型” 添加到 “模型数组中”
113             [_shops addObject:shop];
114         }
115     }
116     return _shops;
117 }
118 
119 
120 8:使用View
121 // 创建一个商品父控件
122 XMGShopView *shopView = [[XMGShopView alloc] init];
123 shopView.frame = CGRectMake(shopX, shopY, shopW, shopH);
124 // 将商品父控件添加到shopsView中
125 [self.shopsView addSubview:shopView];
126 
127 /**
128  
129  NSDictionary *dict = nil; // 从其他地方加载的字典
130  
131  XMGShop *shop = [XMGShop shopWithDict:dict];
132  
133  XMGShopView *shopView = [[XMGShopView alloc] init];
134  shopView.shop = shop;
135  shopView.frame = CGRectMake(0, 0, 70, 100);
136  [self.view addSubview:shopView];
137  
138  
139  // 扩展性差
140  // 扩展好的体现:即使改变了需求。我们也不需要动大刀子
141  */
142 
143 /******************************************************************************/
技术分享

五:initWithFrame

技术分享
 1 五:initWithFrame
 2 1:在上一步的基础上只要修改init方法为
 3 /** init方法内部会自动调用initWithFrame:方法 */
 4 - (instancetype)initWithFrame:(CGRect)frame
 5 {
 6     if (self = [super initWithFrame:frame]) {
 7         // 添加一个图片
 8         UIImageView *iconView = [[UIImageView alloc] init];
 9         [self addSubview:iconView];
10         self.iconView = iconView;
11         
12         // 添加一个文字
13         UILabel *nameLabel = [[UILabel alloc] init];
14         nameLabel.textAlignment = NSTextAlignmentCenter;
15         [self addSubview:nameLabel];
16         self.nameLabel = nameLabel;
17     }
18     return self;
19 }
20 
21 
22 2:最后设置数据的时候也可以使用下面的方法实现View的创建
23 XMGShopView *shopView = [[XMGShopView alloc] initWithFrame:CGRectMake(shopX, shopY, shopW, shopH)];
24 
25 
26 /******************************************************************************/
技术分享

六:MVC

技术分享
  1 六:MVC
  2 
  3 1:model
  4 @interface XMGShop : NSObject
  5 /** 名字 */
  6 @property (nonatomic, copy) NSString *name;
  7 /** 图标 */
  8 @property (nonatomic, copy) NSString *icon;
  9 /** 通过一个字典来初始化模型对象 */
 10 - (instancetype)initWithDict:(NSDictionary *)dict;
 11 
 12 /** 通过一个字典来创建模型对象 */
 13 + (instancetype)shopWithDict:(NSDictionary *)dict;
 14 @end
 15 
 16 
 17 @implementation XMGShop
 18 
 19 - (instancetype)initWithDict:(NSDictionary *)dict
 20 {
 21     if (self = [super init]) {
 22         self.name = dict[@"name"];
 23         self.icon = dict[@"icon"];
 24     }
 25     return self;
 26 }
 27 
 28 + (instancetype)shopWithDict:(NSDictionary *)dict
 29 {
 30     // 这里要用self
 31     return [[self alloc] initWithDict:dict];
 32 }
 33 
 34 @end
 35 
 36 
 37 2:view
 38 @class XMGShop;
 39 
 40 @interface XMGShopView : UIView
 41 /** 商品模型 */
 42 @property (nonatomic, strong) XMGShop *shop;
 43 
 44 - (instancetype)initWithShop:(XMGShop *)shop;
 45 + (instancetype)shopViewWithShop:(XMGShop *)shop;
 46 + (instancetype)shopView;
 47 @end
 48 
 49 
 50 @interface XMGShopView()
 51 /** 图片 */
 52 @property (nonatomic, weak) UIImageView *iconView;
 53 
 54 /** 名字 */
 55 @property (nonatomic, weak) UILabel *nameLabel;
 56 @end
 57 
 58 @implementation XMGShopView
 59 
 60 - (instancetype)initWithShop:(XMGShop *)shop
 61 {
 62     if (self = [super init]) {
 63         self.shop = shop;
 64     }
 65     return self;
 66 }
 67 
 68 + (instancetype)shopViewWithShop:(XMGShop *)shop
 69 {
 70     return [[self alloc] initWithShop:shop];
 71 }
 72 
 73 + (instancetype)shopView
 74 {
 75     return [[self alloc] init];
 76 }
 77 
 78 /** init方法内部会自动调用initWithFrame:方法 */
 79 - (instancetype)initWithFrame:(CGRect)frame
 80 {
 81     if (self = [super initWithFrame:frame]) {
 82         // 添加一个图片
 83         UIImageView *iconView = [[UIImageView alloc] init];
 84         [self addSubview:iconView];
 85         self.iconView = iconView;
 86         
 87         // 添加一个文字
 88         UILabel *nameLabel = [[UILabel alloc] init];
 89         nameLabel.textAlignment = NSTextAlignmentCenter;
 90         [self addSubview:nameLabel];
 91         self.nameLabel = nameLabel;
 92     }
 93     return self;
 94 }
 95 
 96 /**
 97  * 当前控件的frame发生改变的时候就会调用
 98  * 这个方法专门用来布局子控件,设置子控件的frame
 99  */
100 - (void)layoutSubviews
101 {
102     // 一定要调用super方法
103     [super layoutSubviews];
104     
105     CGFloat shopW = self.frame.size.width;
106     CGFloat shopH = self.frame.size.height;
107     
108     self.iconView.frame = CGRectMake(0, 0, shopW, shopW);
109     self.nameLabel.frame = CGRectMake(0, shopW, shopW, shopH - shopW);
110 }
111 
112 - (void)setShop:(XMGShop *)shop
113 {
114     _shop = shop;
115     
116     self.iconView.image = [UIImage imageNamed:shop.icon];
117     self.nameLabel.text = shop.name;
118 }
119 
120 @end
121 
122 
123 
124 
125 
126 
127 controller
128 
129 
130 @property (nonatomic, strong) NSMutableArray *shops;
131 
132 
133 
134 // 懒加载
135 // 1.第一次用到时再去加载
136 // 2.只会加载一次
137 - (NSMutableArray *)shops
138 {
139     if (_shops == nil) {
140         // 创建"模型数组"
141         _shops = [NSMutableArray array];
142         
143         // 获得plist文件的全路径
144         NSString *file = [[NSBundle mainBundle] pathForResource:@"shops.plist" ofType:nil];
145         
146         // 从plist文件中加载一个数组对象(这个数组中存放的都是NSDictionary对象)
147         NSArray *dictArray = [NSArray arrayWithContentsOfFile:file];
148         
149         // 将 “字典数组” 转换为 “模型数据”
150         for (NSDictionary *dict in dictArray) { // 遍历每一个字典
151             // 将 “字典” 转换为 “模型”
152             XMGShop *shop = [XMGShop shopWithDict:dict];
153             
154             // 将 “模型” 添加到 “模型数组中”
155             [_shops addObject:shop];
156         }
157     }
158     return _shops;
159 }
160 
161 // 创建一个商品父控件
162 XMGShopView *shopView = [XMGShopView shopViewWithShop:self.shops[index]];
163 // 设置frame
164 shopView.frame = CGRectMake(shopX, shopY, shopW, shopH);
165 // 将商品父控件添加到shopsView中
166 [self.shopsView addSubview:shopView];
167 
168 
169 /******************************************************************************/
技术分享

七:Xib的使用

技术分享
 1 七:XIB
 2 
 3 1:xibView中
 4 /** 商品模型 */
 5 @property (nonatomic, strong) XMGShop *shop;
 6 + (instancetype)shopViewWithShop:(XMGShop *)shop;
 7 
 8 + (instancetype)shopViewWithShop:(XMGShop *)shop
 9 {
10     // self == XMGShopView
11     // NSStringFromClass(self) == @"XMGShopView"
12     XMGShopView *shopView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
13     shopView.shop = shop;
14     return shopView;
15 }
16 
17 - (void)setShop:(XMGShop *)shop
18 {
19     _shop = shop;
20     
21     UIImageView *iconView = (UIImageView *)[self viewWithTag:1];
22     iconView.image = [UIImage imageNamed:shop.icon];
23     
24     UILabel *nameLabel = (UILabel *)[self viewWithTag:2];
25     nameLabel.text = shop.name;
26 }
27 
28 2:控制器中设置数据
29 // 从xib中加载一个商品控件
30 XMGShopView *shopView = [XMGShopView shopViewWithShop:self.shops[index]];
31 // 设置frame
32 shopView.frame = CGRectMake(shopX, shopY, shopW, shopH);
33 // 添加商品控件
34 [self.shopsView addSubview:shopView];
技术分享

八:牛逼框架MJExtension使用

技术分享
  1 /******************************************************************************/
  2 八:MJExtension
  3 1:是一套“字典和模型之间互相转换”的轻量级框架,模型属性
  4 /**
  5  *  微博文本内容
  6  */
  7 @property (copy, nonatomic) NSString *text;
  8 
  9 /**
 10  *  微博作者
 11  */
 12 @property (strong, nonatomic) User *user;
 13 
 14 /**
 15  *  转发的微博
 16  */
 17 @property (strong, nonatomic) Status *retweetedStatus;
 18 
 19 /**
 20  *  存放着某一页微博数据(里面都是Status模型)
 21  */
 22 @property (strong, nonatomic) NSMutableArray *statuses;
 23 
 24 /**
 25  *  总数
 26  */
 27 @property (assign, nonatomic) NSNumber *totalNumber;
 28 
 29 /**
 30  *  上一页的游标
 31  */
 32 @property (assign, nonatomic) long long previousCursor;
 33 
 34 /**
 35  *  下一页的游标
 36  */
 37 @property (assign, nonatomic) long long nextCursor;
 38 
 39 
 40 /**
 41  *  名称
 42  */
 43 @property (copy, nonatomic) NSString *name;
 44 
 45 /**
 46  *  头像
 47  */
 48 @property (copy, nonatomic) NSString *icon;
 49 
 50 2:对应方法的实现
 51 /**
 52  MJ友情提醒:
 53  1.MJExtension是一套“字典和模型之间互相转换”的轻量级框架
 54  2.MJExtension能完成的功能
 55  * 字典 --> 模型
 56  * 模型 --> 字典
 57  * 字典数组 --> 模型数组
 58  * 模型数组 --> 字典数组
 59  3.具体用法主要参考 main.m中各个函数 以及 "NSObject+MJKeyValue.h"
 60  4.希望各位大神能用得爽
 61  */
 62 
 63 #import <Foundation/Foundation.h>
 64 #import "MJExtension.h"
 65 #import "User.h"
 66 #import "Status.h"
 67 #import "StatusResult.h"
 68 
 69 /**
 70  *  简单的字典 -> 模型
 71  */
 72 void keyValues2object()
 73 {
 74     // 1.定义一个字典
 75     NSDictionary *dict = @{
 76                            @"name" : @"Jack",
 77                            @"icon" : @"lufy.png",
 78                            };
 79     
 80     // 2.将字典转为User模型
 81     User *user = [User objectWithKeyValues:dict];
 82     
 83     // 3.打印User模型的属性
 84     NSLog(@"name=%@, icon=%@", user.name, user.icon);
 85 }
 86 
 87 /**
 88  *  复杂的字典 -> 模型 (模型里面包含了模型)
 89  */
 90 void keyValues2object2()
 91 {
 92     // 1.定义一个字典
 93     NSDictionary *dict = @{
 94                            @"text" : @"是啊,今天天气确实不错!",
 95                            
 96                            @"user" : @{
 97                                    @"name" : @"Jack",
 98                                    @"icon" : @"lufy.png"
 99                                    },
100                            
101                            @"retweetedStatus" : @{
102                                    @"text" : @"今天天气真不错!",
103                                    
104                                    @"user" : @{
105                                            @"name" : @"Rose",
106                                            @"icon" : @"nami.png"
107                                            }
108                                    }
109                            };
110     
111     // 2.将字典转为Status模型
112     Status *status = [Status objectWithKeyValues:dict];
113     
114     // 3.打印status的属性
115     NSString *text = status.text;
116     NSString *name = status.user.name;
117     NSString *icon = status.user.icon;
118     NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
119     
120     // 4.打印status.retweetedStatus的属性
121     NSString *text2 = status.retweetedStatus.text;
122     NSString *name2 = status.retweetedStatus.user.name;
123     NSString *icon2 = status.retweetedStatus.user.icon;
124     NSLog(@"text2=%@, name2=%@, icon2=%@", text2, name2, icon2);
125 }
126 
127 /**
128  *  复杂的字典 -> 模型 (模型的数组属性里面又装着模型)
129  */
130 void keyValues2object3()
131 {
132     // 1.定义一个字典
133     NSDictionary *dict = @{
134                            @"statuses" : @[
135                                    @{
136                                        @"text" : @"今天天气真不错!",
137                                        
138                                        @"user" : @{
139                                                @"name" : @"Rose",
140                                                @"icon" : @"nami.png"
141                                                }
142                                        },
143                                    
144                                    @{
145                                        @"text" : @"明天去旅游了",
146                                        
147                                        @"user" : @{
148                                                @"name" : @"Jack",
149                                                @"icon" : @"lufy.png"
150                                                }
151                                        },
152                                    
153                                    @{
154                                        @"text" : @"嘿嘿,这东西不错哦!",
155                                        
156                                        @"user" : @{
157                                                @"name" : @"Jim",
158                                                @"icon" : @"zero.png"
159                                                }
160                                        }
161                                    
162                                    ],
163                            
164                            @"totalNumber" : @"2014",
165                            
166                            @"previousCursor" : @"13476589",
167                            
168                            @"nextCursor" : @"13476599"
169                            };
170     
171     // 2.将字典转为StatusResult模型
172     StatusResult *result = [StatusResult objectWithKeyValues:dict];
173     
174     // 3.打印StatusResult模型的简单属性
175     NSLog(@"totalNumber=%d, previousCursor=%lld, nextCursor=%lld", result.totalNumber, result.previousCursor, result.nextCursor);
176     
177     // 4.打印statuses数组中的模型属性
178     for (Status *status in result.statuses) {
179         NSString *text = status.text;
180         NSString *name = status.user.name;
181         NSString *icon = status.user.icon;
182         NSLog(@"text=%@, name=%@, icon=%@", text, name, icon);
183     }
184 }
185 
186 /**
187  *  字典数组 -> 模型数组
188  */
189 void keyValuesArray2objectArray()
190 {
191     // 1.定义一个字典数组
192     NSArray *dictArray = @[
193                            @{
194                                @"name" : @"Jack",
195                                @"icon" : @"lufy.png",
196                                },
197                            
198                            @{
199                                @"name" : @"Rose",
200                                @"icon" : @"nami.png",
201                                },
202                            
203                            @{
204                                @"name" : @"Jim",
205                                @"icon" : @"zero.png",
206                                }
207                            ];
208     
209     // 2.将字典数组转为User模型数组
210     NSArray *userArray = [User objectArrayWithKeyValuesArray:dictArray];
211     
212     // 3.打印userArray数组中的User模型属性
213     for (User *user in userArray) {
214         NSLog(@"name=%@, icon=%@", user.name, user.icon);
215     }
216 }
217 
218 /**
219  *  模型 -> 字典
220  */
221 void object2keyValues()
222 {
223     // 1.新建模型
224     User *user = [[User alloc] init];
225     user.name = @"Jack";
226     user.icon = @"lufy.png";
227     
228     Status *status = [[Status alloc] init];
229     status.user = user;
230     status.text = @"今天的心情不错!";
231     
232     // 2.将模型转为字典
233     //    NSDictionary *dict = [status keyValues];
234     NSDictionary *dict = status.keyValues;
235     NSLog(@"%@", dict);
236 }
237 
238 /**
239  *  模型数组 -> 字典数组
240  */
241 void objectArray2keyValuesArray()
242 {
243     // 1.新建模型数组
244     User *user1 = [[User alloc] init];
245     user1.name = @"Jack";
246     user1.icon = @"lufy.png";
247     
248     User *user2 = [[User alloc] init];
249     user2.name = @"Rose";
250     user2.icon = @"nami.png";
251     
252     User *user3 = [[User alloc] init];
253     user3.name = @"Jim";
254     user3.icon = @"zero.png";
255     
256     NSArray *userArray = @[user1, user2, user3];
257     
258     // 2.将模型数组转为字典数组
259     NSArray *dictArray = [User keyValuesArrayWithObjectArray:userArray];
260     NSLog(@"%@", dictArray);
261 }
262 
263 int main(int argc, const char * argv[])
264 {
265     @autoreleasepool {
266         // 简单的字典 -> 模型
267         keyValues2object();
268         
269         // 复杂的字典 -> 模型 (模型里面包含了模型)
270         keyValues2object2();
271         
272         // 复杂的字典 -> 模型 (模型的数组属性里面又装着模型)
273         keyValues2object3();
274         
275         // 字典数组 -> 模型数组
276         keyValuesArray2objectArray();
277         
278         // 模型转字典
279         object2keyValues();
280         
281         // 模型数组 -> 字典数组
282         objectArray2keyValuesArray();
283     }
284     return 0;
285 }
技术分享

iOS-字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用

标签:

原文地址:http://www.cnblogs.com/CoderAlex/p/4826637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!