IOS 字典转模型中出现id怎么办
IOS 字典转模型中出现id怎么办
小鸡蹲蘑菇 发表于3年前
IOS 字典转模型中出现id怎么办
  • 发表于 3年前
  • 阅读 7457
  • 收藏 6
  • 点赞 1
  • 评论 2

移动开发云端新模式探索实践 >>>   

摘要: IOS 字典转模型中出现id怎么办: 很多情况下从服务器获取的JSON数据中会有id字段,而在oc中id属于关键字,如果这个时候使用setValuesForKeysWithDictionary,程序必然会core掉。但是json返回的字段很多,一个一个写setvalue很麻烦。 因此可以有一个简单的方法重写:- (void)setValue:(id)value forUndefinedKey:(NSString *)key

首先看看代码

@property (nonatomic,strong) NSString *id;
@property (nonatomic,strong) NSString *screen_name;
@property (nonatomic,strong) NSString *url;
@property (nonatomic,strong) NSString *mid;
@property (nonatomic,strong) NSString *from;
@property (nonatomic,strong) NSString *created_at;
@property (nonatomic,strong) NSString *text;
@property (nonatomic,strong) NSString *type;
@property (nonatomic,strong) NSString *name;
@property (nonatomic,strong) NSString *user_id;
@property (nonatomic,strong) NSString *width;
@property (nonatomic,strong) NSString *height;
@property (nonatomic,strong) NSString *tag;
@property (nonatomic,strong) NSString *profile_image;
@property (nonatomic,strong) NSString *image1;
@property (nonatomic,strong) NSString *image2;
@property (nonatomic,strong) NSString *image0;

属性很多。手工写setvalue太麻烦

+ (instancetype)picinfo:(NSDictionary *)dict
{
    PicModel *picmodel = [[self alloc] init];
    [picmodel setValuesForKeysWithDictionary:dict];
    return picmodel;
}

单纯的运行setValuesForKeysWithDictionary是必然core的


这时只需要重写- (void)setValue:(id)value forUndefinedKey:(NSString *)key 方法即可

- (void)setValue:(id)value forUndefinedKey:(NSString *)key  {
    if([key isEqualToString:@"id"])
        self.userid = value;
}

并把声明 中的id改为userid

@property (nonatomic,strong) NSString *userid;

这样一来执行程序快速,还省去了不少手工代码。 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 68
码字总数 24144
评论 (2)
霸气的活力
厉害!解决了我纠结一天的问题。。原来这么简单。。
蓝魔鹰圣
也可以这样
+ (JSONKeyMapper *)keyMapper {

return [[JSONKeyMapper alloc] initWithDictionary:@{@"userid":@"id"}];
}
×
小鸡蹲蘑菇
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: