021.forUndefinedKey 处理不存在的key
2015-10-27 16:46
218 查看
--------------- 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就会自动找到它们。
相关文章推荐
- Unity3D加载4种机制
- 使用ngrok让微信公众平台通过80端口访问本机
- Java基础学习9(一维数组及在内存中的分配)
- cuda纹理内存简单操作 (2015年)
- 3.1
- zabbix监控端口状态
- 护卫神,服务器安全专家!
- Myeclipse中怎么将所有的jsp文件编码格式调整为GBK
- 利用runtime实现自定义对象归档总结
- 排序与list.sort()使用
- java中的[Ljava.lang.Object;@2a139a55问题
- JSP的学习(4)——中文乱码的解决
- Servlet3.0中Servlet的使用
- 随记
- 奇妙的NullPointerException
- java string
- 023.Key 路径
- nonatomic, retain,weak,strong用法详解
- Android L中水波纹点击效果的实现
- 简单齐全的ExtendListVeiw 去掉系统箭头,二级菜单删除等功能