setValuesForKeysWithDictionary 使用方法
2016-08-17 23:46
495 查看
定义NSObject文件,setValuesForKeysWithDictionary 为自动将Dic赋值给模型文件,如果模型文件中没有对应的key值,就会崩溃,解决方法为下面,重写
- (void)setValue:(nullable id)value forUndefinedKey:(NSString *)key
- 方法
即可拦截崩溃
%s (代表打印字符串 类似%c)func
- (instancetype)initWithDic:(NSDictionary *)dict{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
(instancetype) stuWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDic:dict];
}
(void)setValue:(id)value forUndefinedKey:(nonnull NSString *)key
{
NSLog(@”拦截崩溃**%s”,func);
}
@end
.m文件实现方式为:
- (instancetype)initWithDic:(NSDictionary *)dict{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
(instancetype) stuWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDic:dict];
}
(void)setValue:(id)value forUndefinedKey:(nonnull NSString *)key
{
NSLog(@”拦截崩溃**%s”,func);
}
@end
调用方式为:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@”Tom”,@”name”,@”110”,@”num”,@”170.0”,@”height”, nil];
student * stu = [[student alloc] initWithDic:dict];
NSLog(@”name = %@ num = %@”, stu.name, stu.num);
KVODEMO:
People.m
1 #import “People.h”
2 #import “Dog.h”
3
4 @implementation People
5
6 /**
7 * 初始化时增加对dog的监听
8 *
9 */
10 - (void)setDog:(Dog *)dog
11 {
12 _dog = dog;
13 [self.dog addObserver:self forKeyPath:@”name” options:NSKeyValueObservingOptionNew context:nil];
14 }
15 /**
16 * 重写observeValueForKeyPath方法
17 */
18 - (void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary
- (void)setValue:(nullable id)value forUndefinedKey:(NSString *)key
- 方法
即可拦截崩溃
%s (代表打印字符串 类似%c)func
import “student.h”
@implementation student- (instancetype)initWithDic:(NSDictionary *)dict{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
(instancetype) stuWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDic:dict];
}
(void)setValue:(id)value forUndefinedKey:(nonnull NSString *)key
{
NSLog(@”拦截崩溃**%s”,func);
}
@end
.m文件实现方式为:
import “student.h”
@implementation student- (instancetype)initWithDic:(NSDictionary *)dict{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
(instancetype) stuWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDic:dict];
}
(void)setValue:(id)value forUndefinedKey:(nonnull NSString *)key
{
NSLog(@”拦截崩溃**%s”,func);
}
@end
调用方式为:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@”Tom”,@”name”,@”110”,@”num”,@”170.0”,@”height”, nil];
student * stu = [[student alloc] initWithDic:dict];
NSLog(@”name = %@ num = %@”, stu.name, stu.num);
KVODEMO:
People.m
1 #import “People.h”
2 #import “Dog.h”
3
4 @implementation People
5
6 /**
7 * 初始化时增加对dog的监听
8 *
9 */
10 - (void)setDog:(Dog *)dog
11 {
12 _dog = dog;
13 [self.dog addObserver:self forKeyPath:@”name” options:NSKeyValueObservingOptionNew context:nil];
14 }
15 /**
16 * 重写observeValueForKeyPath方法
17 */
18 - (void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary
相关文章推荐
- setValuesForKeysWithDictionary方法的正确使用姿势
- android 蓝牙各种UUID
- Access restriction required library rt.jar
- EasyUI的combobox用法
- UITableView初级使用与理解
- EasyUI的datebox用法
- java中的String、StringBuilder和StringBuffer的区别
- Java基础之(三十二)Queue集合
- 用户界面设计之关于控制UI界面的简单总结
- IRequiresSessionState接口控制
- ubuntu12.04配置apue.2e环境
- [Latex] 所有字体embedded: Type3 PDF文档处理 / True Type转换为Type 1
- 【NOIP2016提高A组模拟8.17】Value
- easyUI之layout、tree、tabs、datagrid的结合
- Value
- Weui 微信网站开发样式插件使用教程
- ue4 build configuration的解释
- hdu 5854 K-th value (2016多校第九场1011) 树形dp
- Value【NOIP2016提高A组模拟8.17】
- UI基础学习05