处理Model (二) 使用KVC 方法及其本质

.h文件

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface FlagItemModel : NSObject
@property (nonatomic, copy)NSString *name;
@property (nonatomic, strong) UIImage *icon; // 需要导入 #import <UIKit/UIKit.h>
+ (instancetype)initWithDict:(NSDictionary *)dict;
@end

.m文件

#import "FlagItemModel.h"

@implementation FlagItemModel

+(instancetype)initWithDict:(NSDictionary *)dict{
    FlagItemModel *model = [[FlagItemModel alloc]init];
    [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        [model setValue:obj forKeyPath:key];// KVC方法
    }];
    return model;
}

//这里利用KCV的特性
- (void)setIcon:(UIImage *)icon{
    NSString *imageName = (NSString *)icon;
    _icon = [UIImage imageNamed:imageName];
}
@end
/**
 setValue: forKeyPath: 实现原理
 1.先查看有没有对应的set方法, 如果有set方法,就会调用set方法,给对应的属性赋值;
 2.如果没有set方法,去查看有没有跟key值相同并且带有下划线(_)的成员属性,如果有的话,就给带有下划线(_)的成员属性赋值
 3.如果没有跟key值相同并且带有下划线(_)的成员属性,还会去找有没有跟key值相同名称的成员属性,如果有,就给它赋值.
 4.以上情况都没有,就直接崩溃
 */

KVC本质

字典转模型.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、KVC的概念理解及常用方法 概念 KVC(Key-Value Coding)顾名思义,就是键值编码的意思。在i...
    RM_乾笙阅读 9,132评论 0 10
  • KVC(Key-value coding)键值编码,iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,...
    CALayer_Sai阅读 7,385评论 0 4
  • 在编程中,最常见的就是程序的流程取决于你所使用的各种变量和属性的值,根据变量和属性的值确定后面运行的代码,有时会检...
    pro648阅读 5,612评论 2 27
  • 自二胎开放以来,产科门诊人流量越居第一,产科也床满为患,连带产后恢复中心也看准商机大肆兴起。 转眼间,我也成为宝妈...
    安然梦阅读 3,523评论 0 0
  • 当前基于OCR技术的产品提供的能力: 文字识别,格式比较规整的文本扫描,比如一段纯文本文字,名片(一般名片应用是对...
    志超mike阅读 5,576评论 1 0

友情链接更多精彩内容