Obj-C中的KVC

-setValue:forKey:和 -valueForKey  

[car setValue: @“x” forKey: @“name”];
[car setValue: [NSNumber numberWithFloat:205.4 ] forKey: @“number”]; //先进行包装
-setValue:forKey:首先查找以键key 或者 isKey命名的setter方法。如果不存在setter方法,就在类中查找名为_key 或 key 的实例变量,然后为它赋值。

NSString *name = [car valueForKey:@“name”];
NSLog(@“Name is %@”, name);
-valueForKey 首先查找以键key 或者 isKey命名的getter方法。 如果不存在getter方法,则在对象内部
查找名为_key 或 key 的实例变量。
-valueForKey 在Obj-C运行时使用元数据打开对象并进入其中查找需要的信息。通过使用KVC,可以获取不存在getter方法的对象值,无需通过对象指针直接访问实例变量。

键路径
[car setValue: [NSNumber numberWithInt: 155]
   forKeyPath: @“engine.horsepower”];
NSLog(@“horsepower is %@”, [car valueForKeyPath:@“engine.horsepower”]);

如果向NSArray请求一个键值,它实际上会查询数组中的每个对像来查找这个键值,然后将查询结果打包到另一个数组中返回。



你可能感兴趣的:(Obj-C中的KVC)