iOS学习之KVC (一)
键-值编码是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可访问对象属性。本质上讲,键-值编码定义了你的程序存取方法需要实现的样式及方法签名。缺点是编译时不能检测错误,运算速度相对较慢
例:
有一个person类,和一个Apple设备类,person中有个实例叫jobs,他有3种设备,用个数组装设备
person中有name和appleArray数组属性,且为私有,都不写@pro属性。Apple类中也是,有name和price属性
通过kvc访问私有属性,并做简单的操作
// main.m
// KVCEx01
//
// Created by song on 12-11-23.
// Copyright (c) 2012年 song. All rights reserved.
//
#import
#import "Person.h"
#import "Apple.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person * Jobs = [[Person alloc] init];
Apple * iphone = [[Apple alloc] init];
[iphone setValue:@"iphone" forKey:@"name"];
[iphone setValue:@"8000" forKey:@"price"];
Apple * ipad = [[Apple alloc] init];
[ipad setValue:@"ipad" forKey:@"name"];
[ipad setValue:@"6000" forKey:@"price"];
Apple * ipod = [[Apple alloc] init];
[ipod setValue:@"ipod" forKey:@"name"];
[ipod setValue:@"4000" forKey:@"price"];
NSMutableArray * array = [[NSMutableArray alloc] initWithObjects:iphone,ipad,ipod ,nil];
[Jobs setValue:@"jobs" forKey:@"name"];
[Jobs setValue:array forKey:@"appleArray"];
NSArray * appleArr = [Jobs valueForKey:@"appleArray"];
NSArray * priceArr = [Jobs valueForKeyPath:@"appleArray.price"];
NSArray * nameArr = [Jobs valueForKeyPath:@"appleArray.name"];
NSNumber * numer = [Jobs valueForKeyPath:@"appleArray.@sum.price"];
NSLog(@"apple设备总数组:%@",appleArr);
NSLog(@"apple设备总价格:%@",numer);
NSLog(@"apple各类名字:%@",nameArr);
NSLog(@"apple各类价格:%@",priceArr);
[iphone release];
[ipad release];
[ipod release];
[Jobs release];
}
return 0;
}

浙公网安备 33010602011771号