数据模型的建立

开发中使用字典的坏处,最明显的就是plist文件中key名,需要手动敲出来,并且编译器不会报错。我在有一次项目打错了key,查了好久的错,结果才发现是这个初学者才会犯的错误。

如果要用请务必打开该plist的副本,粘贴复制。

因为该缺陷我们引入的模型的概念,大致的思路是

plist➡️字典数组➡️模型数组

model必须实现的

1.字典转模型的过程最好封装在模型内部

2.模型应该提供一个可以传入字典参数的构造方法

3.返回数据

代码如下

model类(假使plist中的key名有两个name,和icon)

 
 
  1. #import <Foundation/Foundation.h>
  2. @interface MyModel : NSObject
  3. @property(nonatomic,copy)NSString *name;
  4. @property(nonatomic,copy)NSString *icon;
  5. -(instancetype)initWithDict:(NSDictionary *)dict;
  6. + (instancetype)appWithDict:(NSDictionary *)dict;
  7. @end
  
  
  1. #import "MyModel.h"
  2. @implementation MyModel
  3. -(instancetype)initWithDict:(NSDictionary *)dict
  4. {
  5. //字典转模型的过程
  6. if (self = [super init]) {
  7. self.name = dict[@"name"];
  8. self.icon = dict[@"icon"];
  9. }
  10. //返回数据
  11. return self;
  12. }
  13. //为了更好的协作
  14. + (instancetype)appWithDict:(NSDictionary *)dict
  15. {
  16. return [[self alloc] initWithDict:dict];
  17. }
  18. @end

获取plist,并将数据传给model类。

  
  
  1. - (NSArray *)app{
  2. if (_apps == nil) {
  3. //获得plist全路径
  4. NSString *path = [[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil];
  5. NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
  6. //做个遍历将dictArray所有字典转成模型对象放到新的数组中
  7. NSMutableArray *Apparray = [NSMutableArray array];
  8. for (NSDictionary *dict in dictArray) {
  9. // MyModel *app = [[MyModel alloc]initWithDict:dict];
  10. MyModel *app = [MyModel appWithDict:dict];
  11. [Apparray addObject:app];
  12. }
  13. _apps =Apparray;
  14. }
  15. return _apps;
  16. }

然后可以验证啦

  
  
  1. [self app];
  2. for (int index = 0; index<10; index++) {
  3. MyModel *modelInfo = self.apps[index];
  4. NSString *modelName = modelInfo.name;
  5. NSString *modelIcon = modelInfo.icon;
  6. }
  7. //打上断点或者打印一下观察一下是否正常输出
简单的写了个demo来介绍,更加复杂的用法就是后话了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值