IOS KVC 简介


一、KVC 名词解释

KVC: Key Value Coding 的 缩写
KVC在IOS 中快速设置key的值和快速获取key值的方法
使用KVC,我们可以在属性不加入”property”,利用类进行数据存储和访问。


二、KVC举例说明

KVC setValue可以将符合定义的值赋值给key,例: 类,数组 字典 任意符合类定义的数据类型。

2.1 kvc 存储键和访问键—–setValue valueForKey

//  testClass.h
#import "Foundation / Foundation.h"

@interface testClass : NSObject{
    NSString *info1;  
    float *info2;
}

@end
 
//testClass.m

#import "testClass.h"
@implementation testClass
@end

#import "Foundation / Foundation.h"
#import "testClass.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        testClass *t = [[testClass alloc]init];
        [t setValue:@"maomao365.com" forKey:@"info1"];
        
        NSLog(@"---%@---",[t valueForKey:@"info1"]);
        
    }
    return 0;
}  

运行效果:

2016-03-09 15:56:20.224 test[3266:272336] —maomao365.com—
Program ended with exit code: 0


2.2 kvc 访问结构体中的属性 valueForKeyPath

//  testClass2.h
#import  "Foundation / Foundation.h"
#import "testClass.h"
@interface testClass2 : NSObject
{
    testClass *infoClass;
    NSString  *info1;
}

@end

//  testClass2.m
#import "testClass2.h"


@implementation testClass2
@end

#import "Foundation / Foundation.h"
#import "testClass2.h"
#import "testClass.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        testClass2 *tAll = [[testClass2 alloc] init];
        
        testClass *t = [[testClass alloc]init];
        [t setValue:@"信息1" forKey:@"info1"];
        [tAll setValue:t forKey:@"infoClass"];
        [tAll setValue:@"信息2" forKey:@"info1"];
        
        //打印信息
        NSLog(@"--%@--",[tAll valueForKeyPath:@"infoClass.info1"]);
        NSLog(@"--%@--",[tAll valueForKeyPath:@"info1"]);
    }
    return 0;
}