021.forUndefinedKey 处理不存在的key
2015-07-23 02:35
399 查看
--------------- main.m
---------------
#import
<Foundation/Foundation.h>
@interface
FKApple : NSObject
@end
@implementation
FKApple
- (void) setValue:(id)value
forUndefinedKey:(id)key
{
NSLog(@"您尝试设置的key:【%@】并不存在!",
key);
NSLog(@"您尝试设置的value为:%@",
value);
}
- (id) valueForUndefinedKey:(id)key
{
NSLog(@"您尝试访问的key:【%@】并不存在!",
key);
return
nil;
}
@end
int
main()
{
FKApple* app = [[FKApple alloc] init];
[app setValue:@"大苹果"forKey:@"name"];
[app valueForKey:@"name"];
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,可以把类的接口文件,类的实现文件写在main.m文件中。
二、本节代码涉及到的知识点:
1.如果我们使用KVC来操作并不存在的属性(既没有set/get方法,也没有成员变量),
KVC将会自动调用 setValue:forUndefinedKey: 和 valueForUndefinedKey: 两个方法。
2.不过,这两个方法的实现必须由我们自己来写,如果我们不写,系统还是会报错。
3.这两个方法可以不声明,因为只要写了方法的实现,KVC就会自动找到它们。
---------------
#import
<Foundation/Foundation.h>
@interface
FKApple : NSObject
@end
@implementation
FKApple
- (void) setValue:(id)value
forUndefinedKey:(id)key
{
NSLog(@"您尝试设置的key:【%@】并不存在!",
key);
NSLog(@"您尝试设置的value为:%@",
value);
}
- (id) valueForUndefinedKey:(id)key
{
NSLog(@"您尝试访问的key:【%@】并不存在!",
key);
return
nil;
}
@end
int
main()
{
FKApple* app = [[FKApple alloc] init];
[app setValue:@"大苹果"forKey:@"name"];
[app valueForKey:@"name"];
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,可以把类的接口文件,类的实现文件写在main.m文件中。
二、本节代码涉及到的知识点:
1.如果我们使用KVC来操作并不存在的属性(既没有set/get方法,也没有成员变量),
KVC将会自动调用 setValue:forUndefinedKey: 和 valueForUndefinedKey: 两个方法。
2.不过,这两个方法的实现必须由我们自己来写,如果我们不写,系统还是会报错。
3.这两个方法可以不声明,因为只要写了方法的实现,KVC就会自动找到它们。
相关文章推荐
- 020.KVC 底层执行机制
- 019.KVC 键值编码
- mongodb主从复制
- 018.Dot notation 点语法
- 017.retain 属性特性
- 015.assign atomic copy 属性特性
- 016.getter= setter= 属性特性
- iOS开发怎么定位问题出错的代码位置
- android开发变声器
- HDOJ 1280 前m大的数(暴力+快排水过)
- zoj1048
- 享元模式
- Codeforces Round #313 (Div. 2) D. Equivalent Strings
- Nginx HTTP过滤模块开发
- HDU 1710 Binary Tree Traversals
- linux(ubuntu)下编译安装cx_Freeze失败解决方法
- C3PO数据库连接池
- zoj1241
- Codeforces Round #313 (Div. 2) C. Gerald's Hexagon 数学
- 如何使用jlink+gdb在stm32上调试fans-rt