在我們些項(xiàng)目的時(shí)候,很多時(shí)候我們會(huì)用到model,并且挺方便。當(dāng)然成熟的第三方也很多,比如:jsonmodel 和MJ的model。。。
有時(shí)候我們也可以簡(jiǎn)單的的實(shí)現(xiàn),那就是kvc中的setValuesForKeysWithDictionary
1、我們要?jiǎng)?chuàng)建一個(gè)model
**[objc]** [view plain](http://blog.csdn.net/wm9028/article/details/50034567#) [copy](http://blog.csdn.net/wm9028/article/details/50034567#)
//
// People.h
// KVCTest
//
// Created by Mac on 15/11/25.
// Copyright (c) 2015年 wmeng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface People : NSObject
@property (nonatomic,strong) NSString *name;
@property (nonatomic,strong) NSString *age;
@property (nonatomic,strong) NSString *height;
@property (nonatomic,strong) NSString *weight;
@property (nonatomic,strong) NSString *sex;
@end
這樣我們的一個(gè)people的model就已經(jīng)創(chuàng)建完了
2、使用setValuesForKeysWithDictionary
執(zhí)行代碼:
[objc] view plain copy
// 1、創(chuàng)建一個(gè)字典
NSDictionary *dic = @{@"name":@"zhanshang",@"age":@"20",@"height":@"120",@"weight":@"120",@"sex":@"男"};
// 2、創(chuàng)建對(duì)象接受
People *p = [[People alloc]init];
[p setValuesForKeysWithDictionary:dic];
NSLog(@"%@\n%@\n%@\n%@\n%@\n%@",p,p.name,p.age,p.weight,p.height,p.sex);
3、運(yùn)行結(jié)果:
這樣我們就可以吧字典的里面的東西給model對(duì)象了,是不是很簡(jiǎn)單呢。
但是中間也會(huì)遇到一下常見(jiàn)的問(wèn)題,那就是,字典里面有多余的keyValue,但是people沒(méi)有定義,使用setValuesForKeysWithDictionary就會(huì)崩潰了,
解決辦法:(在people.m文件加入一個(gè)方法就可以解決-(void)setValue:(id)value forUndefinedKey:(NSString *)key)
[objc] view plain copy
//
// People.m
// KVCTest
//
// Created by Mac on 15/11/25.
// Copyright (c) 2015年 wmeng. All rights reserved.
//
#import "People.h"
@implementation People
//對(duì)未定義key的處理方法
-(void)setValue:(id)value forUndefinedKey:(NSString *)key
{
}
@end
最后介紹一下-(void)setValue:(id)value forUndefinedKey:(NSString *)key的方法的一些用處:
1、當(dāng)實(shí)現(xiàn)這個(gè)方法以后,對(duì)未定義的keyValue的處理。
2、如果服務(wù)返回的字符串有系統(tǒng)默認(rèn)不能使用的屬性(例如:id ,description等可以進(jìn)行轉(zhuǎn)換)
代碼如下:
[objc] view plain copy
//對(duì)未定義key的處理方法
-(void)setValue:(id)value forUndefinedKey:(NSString *)key
{
if ([key isEqualToString:@"id"]) {
self.id1 = value;
}
if ([key isEqualToString:@"description"]) {
self.description1 = value;
}
}
這樣,id和description都得到相應(yīng)的轉(zhuǎn)換。