KVC的使用

原创 2016年08月29日 20:30:45

一、概念


1、KVC:Key-Value-Coding,对一个对象的属性,以键、值的方式,赋值 或 取值 的一套方法

2、KVC-是一些列分类方法,属于NSObject(凡是NSObject对象或者是子类,都具有KVC的方法)

@interface NSObject(NSKeyValueCoding)

二、KVC 方法的使用
 
 1. setValue:forKey  / setValue:forKeyPath:
 - setValue:forKey:为对象的一个属性 或者 一个成员变量赋值
 - setValue:forKeyPath:属性路径,使用属性路径,必须保证:要赋值的属性前面的对象都不为空,如果前面的属性为空,赋值不能成功。
 
 2.setValuesForKeysWithDictionary: 字典转模型的方法
 将字典中所有的字段一次性填充到对象的属性中
 字典中如果有对象中没有的字段,系统会自动调用对象的 -setValue:forUndefinedKey: 
 
 3.valueForKey / valueForKeyPath:
 
 4. - (void)setValue:(id)value forUndefinedKey:(NSString *)key -- 当字典键值对比对象属性多的时候,实现这个方法,解决报错问题

三、KVC原理简单介绍


- (void)getIvarList {
    unsigned int count = 0;
    //    1. 获取某个类的成员变量列表
    Ivar *ivarList = class_copyIvarList([self.person class], &count);
    //    2.遍历成员变量列表
    for (int i = 0; i < count; i++) {
        const char *ivarName = ivar_getName(ivarList[i]);
        NSString *ivarNameStr = [NSString stringWithUTF8String:ivarName];
        //    3.找到要改变的变量
        if ([ivarNameStr isEqualToString:@“_name”]) {
            //    4.修改变量的值
            object_setIvar(self.person, ivarList[i], @“11223344”);
            //    根据需求,中断循环
            break;
        }
    }
    //    5.释放内存
    free(ivarList);
}


四、优点
1、可以访问对象的 私有 属性和 成员变量,修改对象的内部成员变量 
2、可灵活赋值/取值
3、使用前提,知道key

KVC的原理和用法

Key-Value-Coding:KVC顾名思义就是键值编码,通过[setValue:@"value" forKey:@"key"]来添加一组对象,编译器会把这行代码处理为SEL sel       ...

KVC的用法

示例1:基本赋值取值 @interface Book : NSObject {     NString *name; } @end #import "Book.h" @implement...

Object-C KVC模式使用详解(一)

Object-C KVC模式使用详解(一) 1 除了一般的赋值和取值方法,我们还可以用key —-value——Coding(KVC)键值编码来访问你要存取的类的属性 2:KVC常用的方法...

KVC KVO的使用方法

  • 2015年01月31日 18:14
  • 20KB
  • 下载

iOS:KVO/KVC 的概述与使用

KVO APP开发技术QQ群:347072638 一,概述 KVO,即:Key-Value Observing,它提供一种机制...

14、Objective-C语法之KVC使用

除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性。 下图来自苹果官网:   如何使用KVC存取对象属性呢?看...
  • zwcshy
  • zwcshy
  • 2014年06月19日 13:05
  • 218

iOS --- 关于KVC使用的一些小技巧

KVC是iOS开发中经常会用到的技巧, 主要包括valueForKey:/setValue:ForKey:, valueForKeyPath:/setValue:forKeyPath:两队组合方法. ...

iOS KVC setValuesForKeysWithDictionary的使用

Key Value Coding Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方式访问property, 不必调用明确的property...

OC 属性的属性 点语法的使用 KVC

为属性提供了一些关键字用以控制setter,getter的实现细节 这些关键字我们称为属性的属性 一共3大类(attribute): 第一类 : 读写性控制:(readonly  readw...

iOS之KVC使用

KVC(Key-value coding)是一套利用字符串标识符间接访问对象属性和关系的机制。Cocoa Programming中,Core Data,Application Scriptabilit...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:KVC的使用
举报原因:
原因补充:

(最多只允许输入30个字)