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:@"[email protected]”];//格式是(属性[email protected]运算方式.属性对象中的属性)//使用运算符的前提是 NSNumber 的数据类型

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

时间: 2024-12-09 10:20:42

kvc(键-值编码)的相关文章

Objective-C(十七、KVC键值编码及实例说明)——iOS开发基础

结合之前的学习笔记以及参考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,只是作为参考,以苹果官方文档为准~ 十七.键值编码 KVC 关于KVC的知识点将通过下列例子来展开说明: Person.h文件,Person类拥有name和age两个成员变量 @interface Person : NSObject { @private NSString *_name; NSInteger _age; } - (void)setAge:(NSIn

KVC - 键值编码

[基本概念] 1.键值编码是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可访问对象属性. 2.键值编码方法在OC非正式协议(类目)NSKeyValueCoding中被声明,默认的实现方法由NSObject提供. 3.键值编码支持带有对象值的属性,同时也支持纯数值类型和结构.非对象参数和返回类型会被识别并自动封装/解封. [键值访问] 键值编码中的基本调用包括-valueForKey: 和 -setValue:forkey: 这两个方法,它们以字符串的形式向对象发送消息

关于KVC键值编码

转载自http://www.tuicool.com/articles/2aYfy2 Key-value coding,它是一种使用字符串标识符,间接访问对象属性的机制,而不是直接调用getter 和 setter方法.通常我们使用valueForKey 来替代getter 方法,setValue:forKey来代替setter方法. 首先来看一看KVC与setter,getter方法赋值的区别 Persion *person = [ [Person alloc] init ]; //不使用KVC

ios中键值编码kvc和键值监听kvo的特性及详解

总结: kvc键值编码  1.就是在oc中可以对属性进行动态读写(以往都是自己赋值属性)           2. 如果方法属性的关键字和需要数据中的关键字相同的话                  3. 动态设置:setValue:属性值 forKey:属性名(用于简单的路径)/setValue:属性值 forKeyPath:属性名(用于复杂的路径)kvo键值监听  永久性的监听item属性值的改变,如果改变就从新设置             1.监听方法:[addObserver:self

IOS开发之旅-KVC【键值编码】

在日常开发中,读取修改对象的属性值时,通常是点调用对应的属性进行相关操作.另外一种方式是通过键值编码,简称KVC,在键值编码中主要使用以下方法 /* Given a key that identifies an attribute or to-one relationship, return the attribute value or the related object. Given a key that identifies a to-many relationship, return a

OC8-属性 KVC是键值编码

1.属性,是oc提供的一种快速的模式化的创建实例变量的方式. (1)属性是通过@property标记的, (2)属性会在背后,默默的帮我们做set和get方法 2.属性做的工作 (1)创建一个实例变量,名字是下划线加属性名, (2)帮我们自动get和setter 的方式,创建一组方法, 3.点语法,点语法是专门为了setter 和getter 方法配备的一种语法糖.会自动根据语法和语境调用是哪一种方法, (1) (.)其实就是转换成了getter 和setter 方法,p.hobby.lengt

iOS学习笔记(6)键值编码——KVC

在KVC编程方式中,无论调用setValue:forKey:方法,还是调用valueForKey:方法,都是通过NSString对象来指定被操作属性,其中forKey:标签用户传入属性名的. 对于setValue:属性值[email protected]“name”;代码,底层的执行机制如下. (1)程序优先考虑调用“setName:属性值;”代码通过setter方法完成设置. (2)如果该类没有setName:方法,KVC机制会搜索该类名为_name的成员变量,无论该成员变量是在类接口部分定义

【OC学习-31】利用KVC即键值编码来访问一些对象的属性,尽管这些属性是私有的

最简单的想法是我们创建一个对象,然后利用某些方法给这个对象赋值,然后再用某些方法调用这个值.当然这种描述很类似于字典的键值概念,确实今天学习的就是这样一种方法:KVC,Key-Value coding键值编码. (1)简单的KVC 创建一个Book类,在Book.h里写一个私有的实例变量name,然后再main.m里创建一个book1对象,再给这个book1对象的私有变量name赋值,然后再调用这个值.神奇的地方就在这里:这种方法根本不管这个实力变量是private还是public.呃,Book

键值编码和通用编程

键值编码(KVC)是Cocoa一个通用的用于获取和设定值的一个协议.在编程中,“通用”这词是用于描述一种可以适用于不同情境的实现方式.通用代码可以减少项目中代码总量并使得软件可以处理程序员无法预知的情景.Cocoa至始至终都很重视通用.可复用代码. KVC版看起来需要更多代码输入.让就让我选择一个更能体现KVC价值的场景. 首先,我们定义一个类: @interface CDCPerson : NSObject {     NSString * firstName;     NSString *

Objective-C KVC键值对

KVC键值对是后期在开发项目的时候会经常用到的,如果搞不清楚那个是key,那个是Value,那么就会很吃亏的,我个人是在这方面吃了很多的亏,特别是在做通讯录的时候. 也许刚开始接触的不过是简单的字典,或者是简单的数组,但等到后期遇到字典里包含数组,数组中还有数组,然后在套字典等等,那就SB了. KVC:全拼是(Key-Value-Coding),键值编码. 是一种间接访问实例变量的方法. key:键,用于标识实例变量. Value:值,是实例变量对应的值.下面介绍一下KVC使用的一些方法: 第一