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

来源:互联网 发布:强力磁铁超强 淘宝网 编辑:程序博客网 时间:2024/06/06 19:28

一、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
原创粉丝点击