初识Objecive-C 之 键值编码(KVC)
来源:互联网 发布:wampserver配置sql 编辑:程序博客网 时间:2024/06/07 05:46
- KVC:Key-Value-Coding 通过存取方法,属性或直接设置实例变量来直接更改对象状态。也可以通过字符串描述来更改对象状态,这种方式称为键值编码。
- 键值编码基本调用包括setValue:ForKey:和valueForKey:两个方法
- setValue:ForKey:方法以字符串形式向对象发送消息、第一个参数为OC对象值;第二个参数为字符串,是对象的属性名称或者实例变量名称。
- valueForKey:方法以字符串形式向对象发送消息,用于获取实例变量的值。参数为字符串,是对象的属性名称后者是实例变量的名称。
- 注意:setValue:ForKey:方法首先查找的是setKey命名的setter,如果不存在则在对象内部查找_key或key的实例变量。valueForKey:方法首先查找的是key或isKey命名的getter,如果不存在,则在内部查找_key或key的实例变量。
#import"Student.h"
@implementationStudent
- (NSString*)description{
return[NSStringstringWithFormat:@"Mynameis%@,Myageis%d",self.name,self.age];
}
- (void)dealloc{
[_namerelease];
[superdealloc];
}
@end
#import<Foundation/Foundation.h>
#import"Student.h"
intmain(intargc,constchar*argv[])
{
@autoreleasepool{
Student*stu=[[Studentalloc]init];
[stusetValue:@"anApple"forKey:@"name"];
// 相当于 [stusetName:@"anApple"];
[stusetValue:[NSNumbernumberWithInt:18]forKey:@"age"];
// 相当于[stusetAge:18];
NSLog(@"name:%@,age:%@",[stuvalueForKey:@"name"],[stuvalueForKey:@"age"]);
// 相当于 NSLog(@"name:%@,age:%d",stu.name,stu.age);
}
return0;
}
#import<Foundation/Foundation.h>
@interfaceEngine:NSObject
@property(retain)NSString*name;//引擎名字
@end
#import"Engine.h"
@implementationEngine
- (NSString*)description{
NSString*desc=@"我是引擎,我正在工作";
returndesc;
}
- (void)dealloc{
[_namerelease];
[superdealloc];
}
@end
#import<Foundation/Foundation.h>
#import"Engine.h"
@interfaceCar:NSObject
@property(retain)Engine*engine;//引擎
- (void)run;//跑的方法
@end
#import"Car.h"
@implementationCar
//跑的方法
- (void)run{
NSLog(@"%@",self.engine);
}
@end
#import<Foundation/Foundation.h>
#import"Car.h"
#import"Engine.h"
intmain(intargc,constchar*argv[])
{
@autoreleasepool{
//创建引擎对象
Engine*engine=[[Enginealloc]init];
//创建汽车对象
Car*car=[[Caralloc]init];
//给汽车装配引擎
[carsetValue:engineforKey:@"engine"];
//car对象通过键路径设置引擎的名字
[carsetValue:@"兰博基尼"forKeyPath:@"engine.name"];
//car对象通过键路径获取引擎的名字
NSLog(@"引擎是:%@",[carvalueForKeyPath:@"engine.name"]);
//释放引擎和汽车对象
[enginerelease];
[carrelease];
}
return0;
}
分别用setValue:forKeyPath:和valueForKeyPath:方法设置和获取引擎的name属性值。键路径是:engine.name。实例解释:car对象有一个Engine类型的engine,Engine对象包含了NSString类型的属性name,所以键值路径为:engine.name。
- 初识Objecive-C 之 键值编码(KVC)
- 初识Objecive-C 之 键值观察(KVO)
- 初识Objecive-C 之 属性
- 初识Objecive-C 之 继承
- 初识Objecive-C 之 NSString
- 初识Objecive-C 之 NSArray
- 初识Objecive-C 之 NSDictionary
- 初识Objecive-C 之 通知
- Objective-C之KVC(键值编码)
- 初识Objecive-C 之 面向对象(一)
- 初识Objecive-C 之 面向对象(二)
- 初识Objecive-C 之 self关键字
- 初识Objecive-C 之 内存管理
- 初识Objecive-C 之 类目、延展、协议
- 初识Objecive-C 之 单例模式
- 初识Objecive-C之 委托模式
- Objective-C之KVC(键值编码)详解
- objective-c中的:KVC-键值编码
- 數據庫分佈式計算的一些思考
- 修改wamp server的数据库密码及远程连接数据库的权限
- 尺度空间
- 使用BitBlt复制位图,出现显示黑色块的问题
- the+比较级,the+比较级
- 初识Objecive-C 之 键值编码(KVC)
- 利用存儲過程分頁
- TortoiseSVN使用简介
- 拓扑排序
- jquery源码阅读知识储备(4)关于js中if的解惑
- Android 怎样在styles.xml中定义自己的样式并引用样式
- 原始类型与封装类的区别
- servlet实现文件上传
- 三星SMDK4412的烧写镜像