今天看博客的时候,看到一篇文章关于网络请求后json转到自己的model的一种小技巧,也许很多人用的 YYmodel等第三方库,不过我的确基本都是自己写的,如下:
dict.png
这样写相对来说非常的耗时,有一个简单的方法就是直接用函数:self setValuesForKeysWithDictionary:dict 你可以将你的model里的属性和son字段对应,然后就可以直接赋值啦~ 这是一种简单的KVC的应用。比如说我设置一个简单的 people类,里面三个属性:
<pre><code>@property (copy, nonatomic) NSString *name;
@property (copy, nonatomic) NSString *sex;
@property (copy, nonatomic) NSString *age;</pre></code>
构造了这样的一个字典:
<pre><code> NSArray *values = @[@"slp", @"nan", @"22", @"simd"];
NSArray *keys = @[@"name", @"sex", @"age", @"discription"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:values forKeys:keys];</pre></code>
接下来就是去调用setValuesForKeysWithDictionary方法给people赋值。
<pre><code>- (instancetype)initWithDict:(NSDictionary *)dict{
if (self = [self init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
}</pre></code>
当然,因为可能有时候会多余的json字段你用不到,你可以写如下的方法:
<pre><code>- (void)setValue:(id)value forUndefinedKey:(NSString *)key{
}</pre></code>
不然很容易就报错了哦。
这样 简单的,我们的people的属性就得到了相应的值啦~
网友评论