OC中的KVC

   KVCKey-Value Coding 键值编码

     通过指定表示要访问的属性名字的字符串标示符,可以进行类的属性读取和设置

     KVC提供了一种在运行时而非编译时动态访问对象属性与实例变量的方式

       KVC的基本调用方法:

            setValue:(NSString *) forKey:(NSString *) :方法以字符串的形式向对象发送消息,可以设置对象实例变量的值。第一个参数为要设置的值(Object-C 对象),第二个参数为字符串,是对象的属性名称或者实例变量名称。

            valueForKey:(NSString *):方法以字符串的形式向对象发送消息,用于获取对象中实例变量的值。参数为字符串,是对象的属性名称或者实例变量。

       

 

    Student *student = [Student new];

    

    //赋值

    [student setValue:@"Rick" forKey:@"_name"];

    [student setValue:@25 forKey:@"_age"];

    [student setValue:@"GZ" forKey:@"_address"];

    NSLog(@"%@",[student description]);

    

    //访问

    NSString *studentName = [student valueForKey:@"name"];

    NSNumber *studentAge = [student valueForKey:@"age"];

    NSString *studentAddress = [student valueForKey:@"address"];

    NSLog(@"%@,%@,%@",studentName,studentAge,studentAddress);

    

    //动态访问默写属性时,使用一些可以在运行时而不是编译时改变的值 的例子

    student.p1 = 1;

    student.p2 = 2;

    student.p3 = 3;

    int num = [student getValuePropertyName:@"p1"];

    NSLog(@"%d",num);

    int num1 = [student getValuePropertyNewName:@"p2"];

    NSLog(@"%d",num1);

    

    //键路径编码

    Book *book = [Book new];

    [student setValue:book forKeyPath:@"_book"];

    [student setValue:@"Harry potter" forKeyPath:@"book._bookName"];

    NSLog(@"%@",book);

    

    NSString *bookName = [student valueForKeyPath:@"_book._bookName"];

    NSLog(@"%@",bookName);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值