美文网首页
[iOS]KVC--键值编码的方式赋值取值

[iOS]KVC--键值编码的方式赋值取值

作者: pingpong_龘 | 来源:发表于2016-03-24 23:52 被阅读187次

    KVC
    除了常用的set/get方法取值赋值之外,还可以使用键值编码的方式赋值取值
    (说直接点,就是一个类,可以直接通过setValueForKey的方式赋值和取值)
    iOS中我们每次声明一个成员变量,一般使用@property的方式,该方式默认存在set和get方法,但除此之外,我们使用如下方法亦可:

    类PoClass,有个成员变量name

    @class Course;
    @interface PoClass : NSObject
    {
        NSString *name;
    }
    @end
    

    如果name没有@property

    PoClass *po = [[PoClass alloc]init]
    
    [po setValue:@"polen" forKey:@"name"];
    NSString *getName = [po valueForKey:@"name"]
    
    [po setValue:@"polenPath" forKeyPath:@"course.name"];
    NSString *getName  = [po valueForKeyPath:@"course.name"];
    

    key的方式和path的方式,可以理解为对setter和getter方式的补充。
    如果有setter/getter方法,则优先会调用setter/getter方法,没有则通过查看_key或者key的value.

    参照推酷:

    首先去检查是否存在setter,getter方法,如果不存在,它将在内部查找名_key或key的实例变量。如果
    还是没有那就会报错误。通过KVC 可以获取不存在getter方法的对象值,无需通过对象指针直接访问。
    【注意】:当我们通过setValue:forKey:设置对象的值,或者valueForKey:来获取对象的值时,如果对象的实例变量为基本数据类型时(例如:char,int,float,BOOL),我们需要对这些数据类型进行封装。

    相关文章

      网友评论

          本文标题:[iOS]KVC--键值编码的方式赋值取值

          本文链接:https://www.haomeiwen.com/subject/bybrlttx.html