首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS KVC干突变

iOS KVC干突变
EN

Stack Overflow用户
提问于 2012-06-18 14:29:14
回答 2查看 183关注 0票数 0

我正在尝试将字符串字典从JSON fetch映射到符合KVC的NSManagedObject,我可以成功地使用setValue: forKey:,但我看不到如何映射类型。

例如,我不能为任何随机字符串设置日期:Printing description of myDate: asdfsadf,不管它是如何工作的。

我看过https://stackoverflow.com/a/5345023/828859,它提供了一些有用的答案。我可以进去为每个单独的属性创建验证...但这看起来并不是很枯燥,因为我必须验证每个日期,并在每次有日期时分别设置OUT值。

在使用setValue: forKey:之前,我更喜欢按类型变化,但我不知道如何区分属性类型。

我想做的是:

代码语言:javascript
复制
switch([object typeforkey:key]){
   case @"NSDate":
   //...
   value = mutatedDate
   //...
}
[object setValue:value forKey:key];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-14 19:13:02

我最终使用了另一个字典来进行属性类型映射。然后,对象映射对象检查要映射的对象是否遵守此特定协议,并在使用setValue:forKey:之前使用属性类型字典转换每个属性。

票数 0
EN

Stack Overflow用户

发布于 2012-06-18 14:40:38

您可以询问对象被实例化为哪种类型的类。所以你可以这样做:

代码语言:javascript
复制
id myObject = [myDictionary objectForKey:key];

if ([myObject isKindOfClass:[NSDate class]]) {
    // Do stuff
}
else if ([myObject isKindOfClass:[NSString class]]) {
    // Do other stuff
}

这是因为对象是包含一个指针的结构,该指针的ivar名称为isa,指向Class类型的对象,因此您可以随时询问对象它来自哪种类型的类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11077866

复制
相关文章

相似问题

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