ios KVC(NSKeyValueCoding)用法


ios KVC模式主要用到以下几个方法:
1、- ( void)setValue:( id)value forKey:( NSString *)key;

2、- (id)valueForKey:(NSString *)key;

3、- (id)valueForKeyPath:(NSString *)keyPath;

4、- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;

通过第1个方法,我们可以给对象以属性名为key设置一个value值,

通过第2个方法,我们可以获取对象以属性名为key的一个value值,

通过第3个方法,我们可以获取一个以属性名为为路径(key1.key2)的一个value值,

通过第4个方法,我么可以给对象以属性名为路径(key1.key2)设置一个value值。

下面我们举例说明:

在命令行下创建一个KVCTest工程

首相创建两个对象类(Jobs和Device):

//.m文件中什么也不用写

#import




@interface Jobs : NSObject

{

    NSMutableArray *_deviceArray;

}

 

@end

#import




@interface Device : NSObject

{

    NSString *_name;

    NSNumber *_price;

}

 

@end

然后在main中

#import

#import "Jobs.h"

#import "Device.h"




int main(int argc, const char * argv[])

{




    @autoreleasepool {

        

        Jobs *jobs = [[Jobs alloc]init];

        NSMutableArray *deviceArr = [[NSMutableArray alloc] initWithCapacity:3];

        //注意都是以类中属性作为key值的

        Device *macbook = [[Device alloc]init];

        [macbook setValue:@"macbook" forKey:@"_name"];

        [macbook setValue:@12 forKey:@"_price"];

        [deviceArr addObject:macbook];

        

        macbook = [[Device alloc]init];

        [macbook setValue:@"iphone" forKey:@"_name"];

        [macbook setValue:@13 forKey:@"_price"];

        [deviceArr addObject:macbook];

        

        macbook = [[Device alloc]init];

        [macbook setValue:@"ipad" forKey:@"_name"];

        [macbook setValue:@14 forKey:@"_price"];

        [deviceArr addObject:macbook];

        

        [jobs setValue:deviceArr forKey:@"_deviceArray"];

        

        NSLog(@"%@",[[[jobs valueForKey:@"_deviceArray"] objectAtIndex:0] valueForKey:@"_name"]);

        //通过key值取值

        

        NSLog(@"%@",[jobs valueForKeyPath:@"_deviceArray._name"]);//通过路径获取value

        

        //通过sum min max avg count可以对NSNumber类型数据进行简单计算

        NSLog(@"%@",[jobs valueForKeyPath:@"deviceArray.@count"]);

        NSLog(@"%@",[jobs valueForKeyPath:@"deviceArray.@sum._price"]);

    }

    return 0;

 

}

你可能感兴趣的:(ios KVC(NSKeyValueCoding)用法)