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;

}

posted @ 2013-12-23 11:04  swell  阅读(153)  评论(0)    收藏  举报