文档章节

iOS开发之如何将字典转为模型

shenhuniurou
 shenhuniurou
发布于 2016/03/01 21:34
字数 527
阅读 48
收藏 0

        刚刚学习了如何读取plist,将plist中的字典对象转成数组对象。字典和模型都可以存储数据,既然都可以存储对象,那么为什么要把plist中的字典转成模型呢?

        字典 :通过字符串类型的key来取值。(一般情况下,设置数据和取出数据都使用"字符串类型的key",编写这些key时,编译器不会有任何友善提示,需要手动敲写字符串key,key容易写错,而且如果写错,编译器不会有任何警告和报错,容易造成设错数据或者取错数据)

        模型 :用来存放数据的类, 继承自NSObject。(我感觉就像java中的javabean)所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示会更加专业。模型设置数据和取出数据都是通过它的属性,,属性名如果写错,编译器会马上报错,因此保证了数据的正确性。使用模型访问属性时, 编译器会提供一系列的提示,提高编码效率。


首先自定义一个模型类,属性和字典中的要对应

/** Shop.h */
#import <Foundation/Foundation.h>

@interface Shop : NSObject

/** 商品名称 */
@property(nonatomic, copy) NSString *name;

/** 商品图片 */
@property(nonatomic, copy) NSString *icon;

-(instancetype)initWithDict:(NSDictionary *)dict;

+(instancetype)shopWithDict:(NSDictionary *)dict;

@end
/** Shop.m */
#import "Shop.h"

@implementation Shop
/** 用字典对象来初始化模型 */
-(id)initWithDict:(NSDictionary *)dict {
    
    if(self == [super init]) {
        self.name = dict[@"name"];
        self.icon = dict[@"icon"];
    }
    return self;
}

+(id)shopWithDict:(NSDictionary *)dict {
    return [[self alloc]initWithDict:dict];
}


@end

最后在ViewController中将字典转成模型

/** 所有商品数据 */
@property (strong, nonatomic)NSArray *shops;


//这个方法是重写的getter方法,懒加载方式
- (NSArray *)shops {
    
    if(_shops == nil) {
    
        //加载plist数据
        NSBundle *bundle = [NSBundle mainBundle];
        NSString *file = [bundle pathForResource:@"shops" ofType:@"plist"];
        NSArray *dictArr = [NSArray arrayWithContentsOfFile:file];
        NSLog(@"%@", dictArr);
        
        //new一个可变数组存储模型对象
        NSMutableArray *shopArr = [NSMutableArray array];
        
        for (NSDictionary *dict in dictArr) {
            //调用Shop的类方法将字典转成模型
            Shop *shop = [Shop shopWithDict:dict];
            [shopArr addObject:shop];
        }
        
        //将模型数组赋值给_shops
        _shops = shopArr;
    }
    
    return _shops;
}


© 著作权归作者所有

shenhuniurou
粉丝 19
博文 78
码字总数 63826
作品 0
广州
Android工程师
私信 提问
机器学习 AI 谷歌ML Kit 与苹果Core ML

概述 移动端所说的AI,通常是指“机器学习”。 定义:机器学习其实就是研究计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身。从实践的意义上...

齐行超
10/11
0
0
使用 Xamarin 开发 iOS 键盘扩展(含网络访问)

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/...

walter lv
02/24
0
0
面试官自述:面向高级开发人员的iOS面试问题

当您准备进行技术性iOS面试时,了解您可能会询问哪些主题以及经验丰富的iOS开发人员期望什么是非常重要的。 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。 这些问题涉及iOS开发的...

菇哒微课
2018/04/26
0
0
iOS开发者必备:九大设计类工具

“工欲善其事,必先利其器”,对于iOS开发者和设计师来说,若在开发和设计的过程中有“利器”在手,那或许将会起到事半功倍的效果。现在,就让我们盘点下,当下最为流行和实用的iOS设计类开发...

沉淀岁月
2013/09/12
314
0
手把手教你使用MJExtension(简单使用)

一、MJExtension第三方框架 我们在iOS开发过程中,我们常常需要将字典数据(也就是JSON数据)与Model模型之间的转化,例如网络请求返回的微博数据、等等,如果我们自己全部手动去创建模型并赋值...

贝勒老爷
2018/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
23分钟前
5
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
48分钟前
4
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
51分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
57分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部