zoukankan      html  css  js  c++  java
  • KVC

    KVC (key value coding)键值编码

    先定义两个类,person,dog

    1 @interface Dog : NSObject
    2 @property (nonatomic,copy) NSString *name;
    3 @end
     1 #import <Foundation/Foundation.h>
     2 @class Dog;
     3 
     4 @interface Person : NSObject
     5 @property (nonatomic,copy) NSString *name;
     6 @property (nonatomic,assign) int age;
     7 @property (nonatomic,copy) NSString *phone;
     8 @property (nonatomic,strong) Dog *dog;
     9 
    10 @end
     1   //实例化两个person
     2         Person *p = [[Person alloc]init];
     3         Person *p1= [[Person alloc]init];
     4         //实例化dog
     5         Dog *d = [[Dog alloc] init];
     6         p.dog = d;
     7         
     8         NSArray *pArray = @[p,p1];
     9         
    10 
    11         // 1.给p.name赋值
    12         [p setValue:@"Tom" forKey:@"name"];
    13         
    14         // 2.用字典给p的属性赋值,类的属性必须在字典中key存在,可以比字典中得key多,但是不能少。
    15         [p setValuesForKeysWithDictionary:@{@"name":@"Jack",@"age":@10,@"phone":@"24234232"}];
    16         
    17         NSDictionary *dict = @{@"name":@"Cruise",@"age":@12,@"phone":@"123214wrew"};
    18         
    19         [p1 setValuesForKeysWithDictionary:dict];
    20         
    21        
    22         // 3.按照键值路径赋值
    23         [p setValue:@"fuck" forKeyPath:@"dog.dogName"];
    24         
    25         // 4.KVC按照键值路径取值时,如果对象不包含指定的键值,会自动进入对象内部,查找对象属性
    26         NSArray *a = [pArray valueForKeyPath:@"name"];
    27         
    28         NSLog(@"%@",a);
    29         
    30         NSLog(@"%@ ,name= %@,age = %d,phone = %@,dogname = %@",p,p.name,p.age,p.phone,p.dog.dogName);

    输出结果:2014-05-25 19:49:26.634 xcode 小技巧- 自定义代码块[832:303] (
        Jack,
        Cruise
    )
    2014-05-25 19:49:26.641 xcode 小技巧- 自定义代码块[832:303] <Person: 0x100202d50> ,name= Jack,age = 10,phone = 24234232,dogname = fuck

    com.nigo
  • 相关阅读:
    STM32 HAL库 UART 串口读写功能笔记
    c语言数组越界的避免方法
    MOS管做开关之初理解
    keil mdk 菜单 “project” 崩溃问题解决
    51 arm x86 的大小端记录
    (C99)复合字面量
    如何的keil试试调试中,看逻辑分析仪Logic viwer
    c语言之——整型的隐式转换与溢出检测
    C语言入坑指南-缓冲区溢出
    C语言入坑指南-被遗忘的初始化
  • 原文地址:https://www.cnblogs.com/delegate/p/3751511.html
Copyright © 2011-2022 走看看