标签:
去模型中查找有没有setName:方法,有就直接调用赋值
假如没有找到setName:方法,就会继续查找有没有_name属性,有就_name = value赋值
假如没有找到_name,还会继续查找模型中有没有name属性
最终没有找到,就会直接报错
报错信息:
KVC主要用于model的赋值,model最好定义我们想要的属性,但是有时会和我们得到的数据有一些不同,以下是几种常见情况:
#import "ZFFlag.h"
@implementation ZFFlag
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
}
@end
假如在视图中需要一张图片,但是得到的数据中一般是图片名,也就是一个 NSString * 类型的数据,具体解决办法请看代码
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface ZFFlag : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) UIImage *icon;
// 重写icon的setter方法,注意类型为得到的数据中该属性的类型
- (void)setIcon:(NSString *)icon
{
_icon = [UIImage imageNamed:icon];
}
// 防崩
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
}
@end
#import "ZFFlagView.h"
#import "ZFFlag.h"
@interface ZFFlagView ()
@property (weak, nonatomic) IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ZFFlagView
- (void)setFlag:(ZFFlag *)flag
{
_flag = flag;
// 给子控件赋值
_label.text = flag.name;
_imageView.image = flag.icon;
}
@end
标签:
原文地址:http://www.cnblogs.com/lanbodada/p/5524107.html