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;

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值