iOS开发之--字典快速赋值

以往在学习解析数据的时候,我们用的方法都是一个一个生命,然后加到字典里面,然后进行复制,那样的麻烦,而且也不能保证一次成功,不出错,我是遇到过多次key值的问题!

其实可以把复制的过程替换成一句话:

[test setValuesForKeysWithDictionary:dic];

问题一:model里面有不存在与dic中的元素会怎样?

这个时候,在控制台输出为空“=(null)”

问题二:如果字典当中有不存在与model中的元素会怎样?

会出错,或者崩溃,那是因为在model中,没有对应的age属性,所以导致了程序崩溃

解决方法:实现一个方法:setValue:forUndefinedKey: ,这个方法能过滤掉不存在的键值,

具体操作:

在model中添加

.h文件中添加:

-(void)setValue:(id)value forUndefinedKey:(NSString *)key;

并需要在m文件中实现:

-(void)setValue:(id)value forUndefinedKey:(NSString *)key{

    }

并不需要要方法中写任何内容!

问题三:如果dic中的key与model中的变量名字不同,应该怎么赋值?

从前面我们可以知道,dic中key赋值给model中与key同名的属性。

如果dic中的key值为username,model中的名字为name,等关键字,应该怎么变化。

解决:从setValue:forUndefinedKey方法入手。

改变dic中的值,还有model种的属性,

完善model中的setValue:forUndefinedKey方法:

-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
        if([key isEqualToString:@"id"])
        {
            self.age=value;
        }
        if([key isEqualToString:@"username"])
        {
            self.name=value;
        }
    }

这样就可以了!当然也可以直接在dic和model里面修改成一致的!

时间: 2024-11-17 11:54:34

iOS开发之--字典快速赋值的相关文章

iOS开发:2分钟快速集成支付宝快捷支付

?这篇文章介绍了iOS快速集成支付宝支付的方法,这篇文章中介绍的方法是通过一次封装,因此配备完结今后调用仅需一行代码即可支付宝支付,非常的便当,希望我们喜欢. 我仅仅根据官方的文档,对支付宝的SDK做了进一步封装,其间密钥的生成很简略,需要看官方的文档,官方的文档我在工程附件目录里也有一份,假设需要立刻集成,没工夫研讨的话,可以大致看一下密钥的生成即可,其他的配备我会在下面进行谈论. 要在iOS运用里集成支付宝支付,需要公司和支付宝签约,然后生成相应的密钥.密钥的生成支付宝的开发文档里现已说的非

【iOS开发】字典的快速赋值 setValuesForKeysWithDictionary

前言 在学习解析数据的时候,我们经常是这么写的:PersonModel.h文件中 @property (nonatomic,copy)NSString *name; @property (nonatomic,copy)NSString *sex; @property (nonatomic,copy)NSString *age; 字典: NSDictionary *dic = @{@"name":@"张三",@"sex":@"男"

iOS开发 -NSUserDefaults 轻量级快速存储

IOS提供了一个轻量级的快速数据存储方式:NSUserDefaults: 程序运行的时候从用户默认的数据库中读取程序的设置,同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作,所有数据都放在内存中,读写速度很快. NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原因. 使用 NSUserDefaults 存储自定义对象的最初

2、iOS 开发之字典转模型和 xib

一.字典转模型(plist文件) 模型的封装方法:(放到代码仓库中) 1.在.h文件中添加与plist文件key值对应的属性名 Array --- > NSArray Dictionary --- > NSDictionary string ---> NSString number ---> NSNumber 注意:属性名和plist中key值一定要一致 2..h文件文件中属性的strong weak copy assign的使用 1> strong : 用于一般的对象或自定

iOS 开发之字典写入文件

在最近的开发中阿,遇到一个问题,是我开始没有注意到的问题,某个羡慕后期维护的过程中发现一个bug,这个bug就是关于字典写入文件的.缘由是这样的,我用字典写入文件的方法 BOOL result = [resultDic writeToFile:CityListDataPath atomically:YES]; if (result) { NSLog(@"HYH-写入成功"); }else { NSLog(@"HYH-写入失败"); } 至于这个问题我通过阅读官方文档

iOS开发——项目需求-快速回到当前界面的顶部

利用UIWindow实现快速到达顶部 如下图,在状态栏添加一个没有颜色的UIWindow(里面添加一个按钮),实现点击这个按钮时能快速的回到当前界面的顶部 核心代码 一.利用UIWindow实现到达顶部1.创建一个新的窗口 1)UIWindow的级别,级别越高,越显示在上层(级别高的window盖在级别低的window上面) UIWindowLevelNormal < UIWindowLevelStatusBar < UIWindowLevelAlert @interface AppDeleg

iOS 开发中字典和字符串的转换

1.字符串转字典 NSString * jsonString = @""; NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; 2.字典转字符串 S

iOS开发&gt;学无止境 - 遍历Model类的属性并完善使用Runtime给Model类赋值

在前几天的一篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来生成和执行Setter方法给Model类的属性赋值. 通 过Runtime来给Model类属性赋值的好处是多多的,它便于代码的后期维护,并且提高了开发效率.当你拿到解析后的字典时你不用一个一个的通过 key去把字典的值赋值给相应的Model类的属性,本篇博客中会给出如何

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

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