关于字典转模型的个人理解

1.字典跟模型的优缺点比较:

1>字典在使用key的时候Xcode不会有提示,容易出错,模型就不会

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

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

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

2.字典转模型的过程(中间加了一些个人想法)

1.>首先需要创建一个plist文件,将字典中的元素添加到plist文件中

注意:应该是创建的NSArray包含NSDictionary,NSDictionary包含NSString

2.>接下来应该在model文件夹创建新的文件并在.h文件中添加两个方法

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

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

3>在新创建的文件中实现。

+(instancetype)****WithDict:(NSDictionary*)dict

{

return[[selfalloc]initWithDict:dict];

}

-(instancetype)initWithDict:(NSDictionary*)dict

{

if(self= [superinit]) {

self.name= dict[@"name"];

self.icon= dict[@"icon"];

}

returnself;

}

4>在viewController中添加一个数组属性的变量,然后在将字典转模型(最重要的一步)

@property(strong,nonatomic)NSArray*shops;

-(NSArray*)shops

{

//初始化数组

if(_shops==nil) {

//获取plist的全路径

NSString*path = [[NSBundlemainBundle]pathForResource:@"shop.plist"ofType:nil];

//加载数组

NSArray*dictArray = [NSArrayarrayWithContentsOfFile:path];

/**

*将dictArray中所有字典转为模型对象

*/

NSMutableArray*shopArray = [NSMutableArrayarray];

/**

*利用for in遍历数组的字典

*/

for(NSDictionary*dictindictArray) {

//创建模型对象

YHShop*shop = [YHShopshopWithDict:dict];

//添加模型对象到数组

[shopArrayaddObject:shop];

}

_shops= shopArray;

}

return_shops;//这里返回的就是一个包含模型的数组

}

@end

5.将之前在使用数组的地方直接改为模型:例如:

YHShop*shopInfo =self.shops[index];//把模型数据给一个新的对象

imageView.image= [UIImageimageNamed:shopInfo.icon];

☆比较简单的理解方式:把之前的数组中的字典抽取出来,创建模型对象,然后把这些模型放到一个新的数组中,通过调用这个数组,进而使用其中的模型。

时间: 2024-08-01 22:03:26

关于字典转模型的个人理解的相关文章

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

字典转模型知识点总结

由于刚基础,对于字典转模型中很多细节的知识点也知之甚少,所以将学习字典转模型中的相关问题进行了总结,其中都是我自己不太理解的.从加载到各个语句的解析,可能 有出入的地方. 字典转换模型时需要掌握的知识点,具体例子 app加载流程 1> app 从mainBundle中加载Plist 2> 按照plist中的数据数量先确定各个View的大小和位置 3> 不过,类似这样的很多图标,控件很多的 UI 设计,建议不使用故事板,而是使用代码创建,否则后期维护也麻烦. 当使用字典时,要将支持文件中放

iOS开发——笔记篇&关于字典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:使用懒加载的方

字典转模型KVC和runtime二者实现与区别

我们知道在开发中,字典转模型是一种很常用的设计模式,当字典中元素的个数比较少的时候,我们可以直接用dic[key]去给模型对象的属性赋值,但是当字典中元素的个数比较多的时候,再用前面的解决方法就不行了,所以就有了KVC(key value coding:键值编码)字典转模型的设计模式. KVC的设计原理: [item setValue:@"value" forKey:@"property"]: 1.首先去模型中查找有没有setProperty,找到,直接调用赋值 [

字典转模型

字典转模型:      一个新的技术是为了解决某个问题或者优化某个技术而产生的.那么字典转模型是为了解决为什么问题而产生的呢?       1.写代码的时候,如果直接用数组或者字典的话,需要多次使用,可能会因为不小心把键名写错,而程序并不报错.鉴于此,可以考虑把字典数据转换成一个模型,把数据封装到一个模型中去,让viewController不再直接和数据打交道,而是和模型交互.       2.一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编辑器没有智能提示,需要

字典转模型的三种方法之四:总结

模型 1 // 2 // YSFoodTypeModule.h 3 // YSUiSplitViewController 4 // 5 // Created by ys on 15/12/12. 6 // Copyright (c) 2015年 ys. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface YSFoodTypeModule : NSObject 12 13 @proper

字典转模型第三方框架---MJExtension

字典转模型第三方框架 Mantle 所有模型都必须继承自MTModel JSONModel 所有模型都必须继承自JSONModel MJExtension 不需要强制继承任何其他类 设计框架需要考虑的问题 侵入性 侵入性大就意味着很难离开这个框架 易用性 比如少量代码实现N多功能 扩展性 很容易给这个框架增加新功能 MJExtension框架在gitHub的下载地址 https://github.com/CoderMJLee/MJExtension *:first-child { margin-

PLSA模型的再理解以及源码分析

PLSA模型的再理解以及源码分析 之前写过一篇PLSA的博文,其中的收获就是知道PLSA是LSA在概率层面的扩展,知道了PLSA是一种主题模型,知道了PLSA中的参数估计使用的是EM算法.当时我就认为,这样子经典好用的算法,我是会回头再来理解它的,这样子才会有更加深刻的心得.所以有了这篇PLSA模型的再理解. 1. 两种思路解PLSA模型 参考了很多资料,发现大体上有两种解决PLSA模型的思路.下面我们大致说一下它们的思路. 思路一:EM算法中需要更新两个概率 PLSA模型的示意图如下: 其中包