iOS

iOS-KVC(一)基本使用

2019-06-23  本文已影响0人  厦门_小灰灰

iOS-KVC(一)基本使用
iOS-KVC(二)内部赋值深层次原理
iOS-KVC(三)内部取值深层次原理
iOS-KVC(四)常见异常处理
iOS-KVC(五)容器类
iOS-KVC(六)正确性验证
iOS-KVC(七)字典相关
iOS-KVC(八)常见使用

KVC 简介

KVC最为重要的四个方法
- (nullable id)valueForKey:(NSString *)key;                          //直接通过Key来取值
- (void)setValue:(nullable id)value forKey:(NSString *)key;          //通过Key来设值
- (nullable id)valueForKeyPath:(NSString *)keyPath;                  //通过KeyPath来取值
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;  //通过KeyPath来设值

衍生的keyPath方法,用来进行深层访问(key使用点语法),也可单层访问。

简单的使用示例
#import "ViewController.h"

@interface ViewController ()
{
    NSString *address;  //成员变量
}

@property (nonatomic, copy) NSString *name;  //属性

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //为属性赋值与取值
    [self setValue:@"hui" forKey:@"name"];  //设置值
    NSString *name = [self valueForKey:@"name"];  //获取值
    NSLog(@"%@", name);
    
    //为成员变量赋值与取值
    [self setValue:@"Xiamen" forKey:@"address"];  //设置值
    NSString *address = [self valueForKey:@"address"];  //获取值
    NSLog(@"%@", address);
}

@end

结果:
2019-06-22 17:05:15.018559+0800 study[2038:33259] hui
2019-06-22 17:05:15.018813+0800 study[2038:33259] Xiamen
#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Person : NSObject

@property (nonatomic, copy) NSString *name;

@end

NS_ASSUME_NONNULL_END

#import "Person.h"

@implementation Person

@end
#import "ViewController.h"
#import "Person.h"

@interface ViewController ()

@property (nonatomic, strong) Person *person;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.person = [[Person alloc] init];
    
    //为Preson的name属性赋值与取值(KeyPath)
    [self setValue:@"hui" forKeyPath:@"person.name"];
    NSString *name = [self valueForKeyPath:@"person.name"];
    NSLog(@"%@", name);
}

@end

结果:
2019-06-22 18:00:14.019477+0800 study[3544:60087] hui
上一篇下一篇

猜你喜欢

热点阅读