• 使用KVC键值编码


    掌握KVC从不使用setter、getter、点语法开始。

    ----- 前言

     

    对象的内部状态是由属性进行封装的。访问对象属性的方式平时在开发过程中用得最多的是getter方法和点语法。键值编程KVC也是一种访问对象属性的机制。

    键值编码的定义是:通过名称(键)间接访问和操作对象的属性,而无须使用访问方法(即getter方法和setter方法)或实例变量。

     

    学会熟练使用KVC的一个理由:KVC使用的键是字符串,既然是字符串就可以在程序运行时进行更改变化。

    关于这点特性非常关键!这样就可以在运行时动态地访问和修改对象的属性,而不是在编译时确定,这也是iOS开发中的黑魔法之一。很多高级的iOS开发技巧都是基于KVC实现的。

     

    如果想熟练的使用,并且体会到KVC的使用优势和劣势,单纯在理论学习时写几个demo肯定是不够的。需要各位把日常的项目中“每时每刻”使用,有一番真切体会以后,再取其精华去其糟粕。

    使用KVC可以从以下几个API开始:

     

    一、

    以前使用的

    NSString *text = [person name]; 或者是 NSString *text = person.name

    现在使用

    NSString *text = [person valueForKey:@"name"];

     

    二、

    以前使用的

    [person setName:@"wang"]; 或者是 person.name = @"wang";

    现在使用

    [person setValue:@"wang" forKey:@"name"];

     

    三、

    以前使用的

    NSString *text = person.name.firstName; 

    现在使用

    NSString *text = [person valueForKeyPath:@"name.firstName"];

     

    四、

    以前使用的

    person.name.firstName = @"Bob";

    现在使用

    [person setValue:@"Bob" forKeyPath:@"name.firstName"];

     

    五、

    新增使用

    NSArray *personKeys = @[@"name", @"address"];

    NSDictionary *personValues = [person dictinaryWithValuesForKeys:personKeys];

     

    六、

    新增使用

    Name *tom = [Name new];

    Address *home = [Address new];

    NSDictionary *personProperties = @{@"name" : tom, @"address" : home};

    [person setValuesForKeysWithDictionary:personProperties];

     

  • 相关阅读:
    升级2010
    如何修改MSSQL的用户名
    减小delphi体积的方法
    Delphi调用大漠插件示例
    Delphi 7升级到XE2的字符串问题
    MSSQL 清空数据库中表的数据
    MSSQL 2008 密钥
    springboot 2.1.4 多数据源配置
    springboot 数据库连接 解决驼峰命名问题
    Flask 热更新
  • 原文地址:https://www.cnblogs.com/cchHers/p/11170212.html
Copyright © 2020-2023  润新知