我正在尝试将字符串字典从JSON fetch映射到符合KVC的NSManagedObject,我可以成功地使用setValue: forKey:,但我看不到如何映射类型。
例如,我不能为任何随机字符串设置日期:Printing description of myDate: asdfsadf,不管它是如何工作的。
我看过https://stackoverflow.com/a/5345023/828859,它提供了一些有用的答案。我可以进去为每个单独的属性创建验证...但这看起来并不是很枯燥,因为我必须验证每个日期,并在每次有日期时分别设置OUT值。
在使用setValue: forKey:之前,我更喜欢按类型变化,但我不知道如何区分属性类型。
我想做的是:
switch([object typeforkey:key]){
case @"NSDate":
//...
value = mutatedDate
//...
}
[object setValue:value forKey:key];发布于 2012-07-14 19:13:02
我最终使用了另一个字典来进行属性类型映射。然后,对象映射对象检查要映射的对象是否遵守此特定协议,并在使用setValue:forKey:之前使用属性类型字典转换每个属性。
发布于 2012-06-18 14:40:38
您可以询问对象被实例化为哪种类型的类。所以你可以这样做:
id myObject = [myDictionary objectForKey:key];
if ([myObject isKindOfClass:[NSDate class]]) {
// Do stuff
}
else if ([myObject isKindOfClass:[NSString class]]) {
// Do other stuff
}这是因为对象是包含一个指针的结构,该指针的ivar名称为isa,指向Class类型的对象,因此您可以随时询问对象它来自哪种类型的类。
https://stackoverflow.com/questions/11077866
复制相似问题