zoukankan      html  css  js  c++  java
  • 使用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];

     

  • 相关阅读:
    前端时间格式化
    Navicat for Oracle
    在JSP中使用Session
    在JSP中使用MD5
    QTP的那些事用QTP测试Web上的Ajax
    VBS函数应用getobject的使用获得Automation对象
    QTP的那些事Excel导入QC没反应的解决方法
    QTP的那些事QC远程执行QTP经常出现QTP崩溃现象解决方案
    QTP的那些事自动化的个人体会感悟(转)
    QC在win7远程执行QTP脚本excel不能读取,及其其他win7问题解决方案(图解转)
  • 原文地址:https://www.cnblogs.com/cchHers/p/11170212.html
Copyright © 2011-2022 走看看