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
网友评论