objective-c - 基础篇 - KVC键值转换设计模式

一、KVC键值转换设计模式

注:KVC键值转换设计模式是一种更加灵活的访问对象属性的方法,该模式有三种实现方法。

#import "ViewController.h"

#import "Person.h"

#import "YZBCard.h"

@interfaceViewController ()

@end

@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    id  p = [[Personalloc]init];

    

    //普通的赋值方法,这种是在Person * p = [[Person alloc]init];定义的时候

   // p.name = @"张三";

    //p.age = 23;

    //第一种:键值的赋值方法,这种是在id  p = [[Person alloc]init];

    [p setValue:@"张三"forKey:@"name"];

    [p setValue:@23forKey:@"age"];

    NSLog(@"%@", [pvalueForKey:@"name"]);

    //第二种:使用字典的形式

   // NSDictionary * dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"李四", @"name", @21, @"age", nil];

  //  [p setValuesForKeysWithDictionary:dic];

    //NSLog(@"%@", p);

    //第三种:使用路径的方式,其中的 card,其实是另外一个YZBCard对象类,之后在Person中定义。

    YZBCard * card =[[YZBCardalloc]init];

    NSDictionary * dic = [[NSDictionaryalloc]initWithObjectsAndKeys:@"李四",@"name", @21,@"age", card, @"card",nil];

     [p setValuesForKeysWithDictionary:dic];

    [p setValue:@1234forKeyPath:@"card.number"];

    NSLog(@"%@", p);

}


#import <Foundation/Foundation.h>

#import "YZBCard.h"

@interface Person : NSObject

@property(strong,nonatomic)NSString * name;

@property(assign,nonatomic)int age;

@property(strong,nonatomic) YZBCard * card;

@end


#import "Person.h"


@implementation Person

- (NSString *)description

{

    return [NSStringstringWithFormat:@"姓名 = %@,年龄 = %d, card =%@",self.name,self.age,self.card.number];

}

@end


@interface YZBCard : NSObject

@property (strong,nonatomic)NSNumber * number;

@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值