iOS开发之如何将字典转为模型
2019独角兽企业重金招聘Python工程师标准>>>
刚刚学习了如何读取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;
}
转载于:https://my.oschina.net/shenhuniurou/blog/626820
iOS开发之如何将字典转为模型相关推荐
- iOS开发JSON字符串和字典互转
1.相关属性简述 NSJSONReadingOptions读取属性: typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) {NSJSONReadi ...
- iOS开发——NSArray中的字典排序
手头上碰到一个项目,需要给数组中的字典中的一个字段排序,想了想,干脆再字典中增加一个字段,用来记录需要排序字段的第一个字符,用它来作为比较的对象,进行排序. - (void)viewDidLoad { ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课 ...
- IOS第四天-新浪微博 -存储优化OAuth授权账号信息,下拉刷新,字典转模型
*************application - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- iOS开发 --- 定位功能(系统框架CoreLocation)
最近在做定位功能,只需要获取当前位置信息,包括经纬度.位置等,不需要持续获取. 对CoreLocation的封装.将定位相关的代码从 Controller 中分离,封装到 NSObject 对象中.采 ...
- iOS开发UI篇—字典转模型
一.能完成功能的"问题代码" 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // ...
- iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
iOS开发UI篇-使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: 1 //2 // YY ...
- iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据
iOS开发:沙盒机制以及利用沙盒存储字符串.数组.字典等数据 1.初识沙盒:(1).存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的.要想数据永久保存,将数据保存成文件,存储到程 ...
- IOS应用管理学习,进阶,涉及字典转模型,工厂方法,面向对象思想,页面布局等
IOS应用管理学习,进阶,涉及字典转模型,工厂方法,面向对象思想,页面布局等 前言:人为规定的参数 每一个 小view视图 宽度 80 高度 90 数据类型 CGFloat 定义, 3 列,数据类型 ...
最新文章
- instantclient_11_2 连接oracle数据
- SQL Server如何查看存储过程的执行计划
- Python 数据分析与展示笔记4 -- Pandas 库基础
- oracle子查询为游标结果集,这个SQL怎么破?select后的爬树子查询(connect by)变换
- 如何应用AutoML加速图机器学习任务的处理?
- jdk8集合类流_JDK 8中的流驱动的集合功能
- C#设计模式之15-解释器模式
- 在linux中添加字体
- 孙子和外孙就是不一样吗?
- hdu 5144 NPY and shot(三分)
- django3与vue3本地搭建
- Windows解决net Framerwork 3.5无法安装的问题
- SPI通信协议_02
- VMware14详细安装带软件
- String转JSONObject,JSONObject转JSONArray,JSONArray数组转换成JSON字符串
- 图片如何转文字?三款良心软件,太好用了!
- 基于C#制作一个ChatGPT桌面助手
- C语言 第六章 多重循环
- HCNP RoutingSwitching之MAC地址防漂移
- freetype 使用解析---矢量字体
热门文章
- Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)
- C++子类对象隐藏了父类的同名成员函数(隐藏篇)
- socket 编程篇六之IPO多路复用-select poll epoll
- 计算机网络(一)计算机网络体系
- 【Linux系统编程学习】 动态库的制作与使用
- linux下查看系统socket读写缓冲区
- strtol,strtoll,strtoul, strtoull函数的使用
- 【C++ Priemr | 15】虚函数表剖析(二)
- WinPcap笔记(1):VisualStudio2015配置WinCap
- 网易严选Java开发三面面经:java读文件内容