6.ios之字典与模型

1.用模型取代字典的好处

?使用字典的坏处

?一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲

dict[@"name"] =@"Jack";

NSString*name = dict[@"name"];

?手敲字符串key,key容易写错

?Key如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据

?

?使用模型的好处

?所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业

?模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性

?使用模型访问属性时,编译器会提供一系列的提示,提高编码效率

app.name =
@"Jack”;

NSString*name = app.name;

2.字典转模型

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

?

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

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

?+ (instancetype)xxxWithDict:(NSDictionary*)dict;

3.instancetype

?instancetype在类型表示上,跟id一样,可以表示任何对象类型

?

?instancetype只能用在返回值类型上,不能像id一样用在参数类型上

?

?instancetype比id多一个好处:编译器会检测instancetype的真实类型

4.字典转模型的过程

5.Sample

#import<Foundation/Foundation.h>
@interface MJApp :NSObject
-(NSString*)GetName;
-(NSString*)GetIcon;
-(instancetype) initWithDict:(NSDictionary *) dict;
+(instancetype) appWithDict:(NSDictionary *) dict;
@end

#import "MJApp.h"
@interface MJApp()
    @property (nonatomic,copy) NSString *name;
    @property (nonatomic,copy) NSString *icon;
@end
@implementation MJApp

-(NSString*)GetName
{
    return self.name;
}
-(NSString*)GetIcon
{
    return self.icon;
}
-(instancetype) initWithDict:(NSDictionary *)dict
{
    if (self = [super init]) {
        self.name = dict[@"name"];
        self.icon = dict[@"icon"];
    }
    return self;
}

+(instancetype)appWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}
@end

时间: 2024-10-06 00:07:18

6.ios之字典与模型的相关文章

iOS模型设计---字典转模型

 iOS模型设计 在iOS开发中,模型一词几乎伴随着每个程序员的开发生涯.在接触模型之前,小编在开发中也会经常碰到逻辑混乱.条理不清晰等情况.接下来,小编将会带领大家学习MVC架构中重要的一环---数据模型的建立. 开始之前,我们以一个例子来进行阐述.小编在上一篇文章的(iOS UI设计-九宫格布局)结尾留下了一个九宫格的UI设计界面,如图. 整个布局中,每个按钮模块所需的图标.名称均来自数据文件(此处为plist文件).接下来,我们来了解一下如何将该数据封装成模型,避免直接从ViewCon

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之KVC字典转模型的底层实现

KVC: Key Value Coding (键值编码) 在iOS开发中,KVC是我们经常要使用的技术.那么KVC有什么作用呢?简单列举一下下面几种: 取值和赋值(开发中基本不用) 获取对象私有变量的值.(经常使用,例如UIPageContorl分页, 设置圆点为图片) 改变对象私有变量的值(经常使用) 简单的字典转模型(偶尔使用) 模型转字典 批量取值 KVC字典转模型的底层实现 通常我们手动将字典转模型的话,会在模型中提供一个类方法接收一个字典,在这个方法中将字典转换成模型,再将转换好的模型

文顶顶 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基础之Plis文件-字典转模型

什么是plist文件? 在开发中直接将数据写在代码里面 不是一种合理的做法 如果数据经常改变 就需要经常翻开对应的代码进行修改 造成代码扩展性低 因此,可以考虑将经常变的数据放在?文件中进?行存储,程序启动后从?文件中 读取最新的数据.如果要变动数据,直接修改数据?文件即可,不?用修改代码 一般可以使?用属性列表?文件存储NSArray或者NSDictionary之类的数据,这 种“属性列表?文件”的扩展名是plist,因此也称为“plist?文件” 在Xcode创建plist文件的步骤: 解析

IOS 开发学习笔记-基础 UI(10)九宫格布局,块动画,字典转模型,Xib使用

大概如下图示:九个应用图标的样子 功能分析 (1)以九宫格的形式展示应用信息 (2)点击下载按钮后,做出相应的操作 步骤分析 (1)加载应用信息 (2)根据应用的个数创建对应的view (3)监听下载按钮点击 思路整理 要在支持文件夹里,放入 plist 文件,且拖拽素材到 supporting files,注意勾选的项目的区别: 大多数情况,往项目中拖拽素材时,通常选择 Destination, Folders:选择第一项:创建组,这样 xcode 导航显式的是黄色文件夹,要知道,Xcode中

iOS开发项目篇—25字典转模型第三方框架、运行时机制简介

iOS开发项目篇—25字典转模型第三方框架.运行时机制简介 一.使用第三方框架完成字典转模型 1.获取框架 在www.code4app.com网站中,搜索字典转模型 可以点击下载代码进行下载,也可以带github上去下载. 管理框架的好处:点击刷新按钮会刷新所有的项目. 2.使用 1.导入第三方框架 2.使用示例 错误提示: 在刷新的时候直接使用一行代码即可: 1 /**加载最新微博数据*/ 2 -(void)loadNewStatus 3 { 4 //1.获得请求管理者 5 AFHTTPReq

ios开发- 利用运行时(runtime)字典转模型

现在的ios开发中,我们通常会使用MVC模式.当我们拿到数据的时候,我们要把数据转成模型使用. 一般情况我们拿到的数据都是字典.这是我们就需要将字典转成模型对象了. 当对象的属性很少的时候,我们可以直接单独写出字典的键值,进行转换. _属性 = dict["键"] 当对象的属性很多的时候,我们可以利用KVC批量设置. setValuesForKeysWithDictionary:<#(NSDictionary *)#> 但是KVC批量转的时候,有个致命的缺点,就是当字典中的

【iOS开发-48】九宫格布局案例:自动布局、字典转模型运用、id和instancetype区别、xib重复视图运用及与nib关系

本次九宫格案例: (1)导入app.plist和各种图片素材,方便后续开发.实际开发中,也是如此. (2)把plist中数组导入进来. --因为本案例中app.plist最终是一个数组,数组里面是字典.所以我们需要一个数组类型来接受这个plist文件. --我们利用之前掌握的在变量的getter中进行延迟加载数据. #import "ViewController.h" @interface ViewController () @property(nonatomic,strong) NS