首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[iOS]KVO setValuesForKeysWithDictionary

[iOS]KVO setValuesForKeysWithDictionary
EN

Stack Overflow用户
提问于 2015-07-08 18:04:38
回答 2查看 153关注 0票数 2

我正在使用setValuesForKeysWithDictionary填充我的模型对象。模型对象定义为

代码语言:javascript
复制
@interface CommonModel : NSObject
    @property (nonatomic,copy)NSString *imageUrl;
    @property (nonatomic,copy)NSString *name;
    @property (nonatomic,copy)NSString *uuid;
    @property (nonatomic,strong)MetaDataModel *metaData;
    @property (nonatomic,copy)NSString *type;
    @property (nonatomic,copy)NSString *age;
@end

我初始化这个类,如下所示

代码语言:javascript
复制
CommonModel *model = [[CommonModel alloc] init];
[model setValuesForKeysWithDictionary:dic];

dic来自服务器数据,如

代码语言:javascript
复制
{
    category = random;
    created = 1436348796510;
    duration = 259;
    metadata =     {
        path = "/songs/396677ea-2556-11e5-afe1-033c8b2070b7";
    };
    modified = 1436348796510;
    name = "\U6ce1\U6cab";
    type = song;
    url = "http://www.devinzhao.com/pomo.mp3";
    uuid = "396677ea-2556-11e5-afe1-033c8b2070b7";
}

我知道类型应该是“歌”而不是歌。

当我使用模型setValue:@"type“forKey:@”type“时,它不会崩溃。

但我不想用like

代码语言:javascript
复制
[model setValue:@"type" forKey:@"type"];

如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2015-07-08 18:07:50

忘记使用KVC,手动编写一个接受NSDictionaryinit方法。

然后,您可以决定如何解释字典中的每个值;例如,type应该是enum,而不是字符串,imageUrl应该是NSURLuuid应该是NSUUID,等等。

票数 2
EN

Stack Overflow用户

发布于 2015-07-08 18:28:19

也许这对你有帮助

代码语言:javascript
复制
CommonModel *model = [[CommonModel alloc] init];
[dic setValue:[NSString stringWithFormat:@"%@",dic[@"type"]] forKey:@"type"];
[model setValuesForKeysWithDictionary:dic];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31289441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档