Objective c iOS KVC干突变
我试图将字符串字典从JSON获取映射到符合KVC的NSManagedObject,我可以成功地使用Objective c iOS KVC干突变,objective-c,ios,mutation,kvc,Objective C,Ios,Mutation,Kvc,我试图将字符串字典从JSON获取映射到符合KVC的NSManagedObject,我可以成功地使用setValue:forKey:,但我看不到如何映射类型 例如,我不能将日期设置为任何随机字符串:打印myDate的说明: asdfsadf 然而,它起了作用 我看了一下,它提供了一些有用的答案。我可以进去为每个属性创建验证。。。但这似乎不是很枯燥,因为我必须验证每个日期,并在每次有日期时分别设置值 在使用setValue:forKey:之前,我更喜欢按类型进行变异,但我不知道如何区分属性类型 我想
setValue:forKey:
,但我看不到如何映射类型
例如,我不能将日期设置为任何随机字符串:打印myDate的说明:
asdfsadf
然而,它起了作用
我看了一下,它提供了一些有用的答案。我可以进去为每个属性创建验证。。。但这似乎不是很枯燥,因为我必须验证每个日期,并在每次有日期时分别设置值
在使用setValue:forKey:
之前,我更喜欢按类型进行变异,但我不知道如何区分属性类型
我想做的是:
switch([object typeforkey:key]){
case @"NSDate":
//...
value = mutatedDate
//...
}
[object setValue:value forKey:key];
您可以询问对象它被实例化为什么类型的类。因此,您可以执行以下操作:
id myObject = [myDictionary objectForKey:key];
if ([myObject isKindOfClass:[NSDate class]]) {
// Do stuff
}
else if ([myObject isKindOfClass:[NSString class]]) {
// Do other stuff
}
这是因为对象是包含一个指针的结构,该指针的ivar名称为isa,指向类型为
Class
的对象,因此您可以随时询问对象它来自什么类型的类。我最后使用另一个字典进行属性类型映射。然后一个对象映射对象检查要映射的对象是否遵守此特定协议,并在使用setValue:forKey:
True之前使用属性类型字典转换每个属性,但是我的问题不清楚,字典来自JSON响应,所以它是字符串字典。啊,我明白了。我认为没有一个干净的方法来做你想做的事。您需要提前知道键是什么以及它们的类型,并在此基础上切换对象类型,或者需要进行一系列的字符串扫描,以确定您正在使用什么,然后进行验证。