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

一: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 }

时间: 2024-11-02 05:47:05

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

iOS开发——笔记篇&amp;关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结

关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结 一:Plist读取 1 /******************************************************************************/ 2 一:简单plist读取 3 4 1:定义一个数组用来保存读取出来的plist数据 5 @property (nonatomic, strong) NSArray *shops; 6 7 2:使用懒加载的方

iOS学习 plist读取和写入文件

干iOS开发时间,后经常用来plist文件.  那plist什么文件是它? 它的全称是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist .因此通常被称为 plist文件.文件是xml格式的. Plist文件通经常使用于储存用户设置.也能够用于存储捆绑的信息 我们创建一个项目来学习plist文件的读写. 1.创建项目Plistdemo 项目创建之后能够找到项目相应的plist文件.打开例如以下图所看到的: 在编辑器中显示相似与表格

python保存字典和读取字典pickle

import pickle import numpy as np def save_obj(obj, name): with open(name + '.pkl', 'wb') as f: pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL) def load_obj(name): with open(name + '.pkl', 'rb') as f: return pickle.load(f) a = load_obj('logistic_regressi

iOS--控制器加载自定义view的xib

我们在项目中,经常需要使用到自定义的view,而xib布局显得更为简洁,那么如何加载一个自定义的xib呢,网上的方法也很多很多,就是因为太多了,我经常会弄混,所以总结其中一个使用,如果以后使用到其他的在补充 O(∩_∩)O~~ 1.创建一个继承UIView的文件和xib,命名一样 2.设置view所有者的class 3.给view关联属性 view的.m文件里面加载xib: -(void)awakeFromNib { [[NSBundlemainBundle]loadNibNamed:@"Tes

UI基础——懒加载,plist文件,字典转模型,自定义view

一.懒加载 只有使用到了商品数组才会创建数组 保证数组只会被创建一次 只要能够保证数组在使用时才创建, 并且只会创建一次, 那么我们就称之为懒加载 lazy - (void)viewDidLoad 控制器的view创建完毕就会调用,该方法只会调用一次 @property (nonatomic, strong)NSArray *shops; - (void)viewDidLoad { [super viewDidLoad]; if (self.shops == nil) { NSLog(@"创建商

iOS开发UI篇—字典转模型

iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 // // LFViewController.m // 03-应用管理 // // Created by apple on 14-5-22. // Copyright (c) 2014年 heima. All rights reserved. // #import "LFViewController.h" @interface LFViewController () @proper

文顶顶 iOS开发UI篇—字典转模型

iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // Created by apple on 14-5-22. 6 // Copyright (c) 2014年 heima. All rights reserved. 7 // 8 9 #import "LFViewController.h" 10 11 @interface LFV

iOS开发UI基础—字典转模型(部分内容转载他人)

iOS开发UI基础-字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组来创建一个模型数组等等. 一.能完成功能的"问题代码" 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // Created by apple on 14-5-22. 6 // Copyrigh

IOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在: (apple是用户名, 8.0是模拟器版本)/Users/apple/Libra