iOS

iOS-KVC(七)字典相关

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

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

当对NSDictionary对象使用KVC时,valueForKey:的表现行为和objectForKey:一样。
所以使用valueForKeyPath:用来访问多层嵌套的字典是比较方便的。

KVC里面还有两个关于NSDictionary的方法

//指输入一组key,返回这组key对应的属性,再组成一个字典
- (NSDictionary<NSString *, id> *)dictionaryWithValuesForKeys:(NSArray<NSString *> *)keys;

//用来修改Model中对应key的属性
- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *, id> *)keyedValues;

简单示例:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Person : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *city;
@property (nonatomic, copy) NSString *desc;

@end

NS_ASSUME_NONNULL_END

#import "Person.h"

@implementation Person

@end


=========

#import "ViewController.h"
#import "Person.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //dictionaryWithValuesForKeys
    Person *p = [[Person alloc] init];
    p.name = @"hui";
    p.city = @"Xiamen";
    p.desc = @"love ios";
    
    NSDictionary *resultDict = [p dictionaryWithValuesForKeys:@[@"name", @"city"]];
    
    NSLog(@"resultDict = %@", resultDict);
    
    //setValuesForKeysWithDictionary
    [p setValuesForKeysWithDictionary:@{@"name": @"fei", @"city": @"FuZhou"}];
    NSLog(@"name=%@, city=%@, desc=%@", p.name, p.city, p.desc);
}

@end

结果:
2019-06-23 15:41:58.329869+0800 study[11932:174321] resultDict = {
    city = Xiamen;
    name = hui;
}
2019-06-23 15:41:58.330041+0800 study[11932:174321] name=fei, city=FuZhou, desc=love ios

上一篇下一篇

猜你喜欢

热点阅读