博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kvc(键-值编码)
阅读量:7243 次
发布时间:2019-06-29

本文共 1529 字,大约阅读时间需要 5 分钟。

kvc(键-值编码)

{ NSString *_name;

    Author *_author;

    NSArray *_kvcArray;

    float price;}

 

 //kvc,setValue 的设的值是 “要设置的值” forKey 设置的是对象的属性,如果不是的话要将其转化对象(int folat,char,double

        Book *book = [[Book alloc] init];

//        Author *author = [[Author alloc] init];

//        [author setValue:@"jack" forKey:@"aname"];

//        

//        //间接访问

//        [book  setValue:@"ipa set Value" forKey:@"name"];

//        [book setValue:author forKey:@"author"];

//        

//        //路径访问

//        [book setValue:@"tom" forKeyPath:@"author.aname"];

//        NSString *authorName = [book valueForKeyPath:@"author.aname"];

//        

        

        //一对多访问

        NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:3];

        for (int i = 0; i < 3; i++) {

            Book *book = [[Book alloc] init];

            NSString *string = [NSString stringWithFormat:@"job_%d",i];

            [book setValue:@(12+i) forKey:@"price"];

            [book setValue:string forKey:@"name"];

            [mutableArray addObject:book];

            [book release];

        }

       

 //     [book setValue:mutableArray forKey:@"_kvcArray”];

//

        

//        NSArray *bookArray = [book valueForKeyPath:@"_kvcArray.name”];//通过数组的中的属性名路径访问,体现了键值访问

   //上面这种访问相当于这种

//      NSArray *bookArray = [mutableArray valueForKeyPath:@“_name”];//这也是对mutableArray 的属性进行路劲访问

  

//        

//        NSLog(@"bookArray:%@",bookArray);

//        

//        NSLog(@"%@",authorName);

 

  //运算 avg sum count min max,运算的必须是NSNumber 数据类型,返回值是NSNumber,   setValue 时,引用计数会加1

        [book setValue:mutableArray forKey:@"_kvcArray”];//将book 的 _kvcArray属性设值

    

        NSNumber *sum = [book valueForKeyPath:@"_kvcArray.@sum.price”];//格式是(属性.@运算方式.属性对象中的属性)//使用运算符的前提是 NSNumber 的数据类型

        

        NSLog(@"sum : %@",sum);

 

转载于:https://www.cnblogs.com/meixian/p/5370971.html

你可能感兴趣的文章
英特尔® 图形性能分析器 2019 R1 版本
查看>>
Developing avb
查看>>
Virtualbox中的Linux:未能加载虚拟光驱 VBoxsGuestAdditions.iso到虚拟电脑
查看>>
linux 本地账号密码无法登陆(shell可以登录),一直返回 登陆的login界面
查看>>
使用oracle来计算方差及标准差
查看>>
ORACLE备份、恢复、常用查询
查看>>
矩阵翻硬币 蓝桥杯
查看>>
启动和停止数据库——启动例程并打开数据库
查看>>
模板模式讲解二
查看>>
core.async中go的作用研究
查看>>
除法(暴力)
查看>>
Python tornado初探
查看>>
metro 文本文件操作
查看>>
【第46题】【062题库】2019年OCP认证062考试新题
查看>>
1297 硬币
查看>>
ORA-01665 control file is not a standby control file
查看>>
pycharm 文件名不显示中文的解决方法
查看>>
340 - Master-Mind Hints
查看>>
python多进程并发
查看>>
微信分享调用 -- c#篇
查看>>