首页 > 代码库 > iOS开发之--字典快速赋值
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里面修改成一致的!
iOS开发之--字典快速赋值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。