我正在使用以下方式初始化一个NSManagedObject
子类:
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues
我也故意将未定义的键传递给它,这当然会引发异常。
因此,我已经实现了:
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
如果一个键未定义,我会将其映射到正确的键。
然而,我的实现从未被调用,相反,使用了
NSManagedObject
的实现,而这个实现又仍然抛出异常。是否存在一种行为(或错误),防止
setValuesForKeysWithDictionary:
使用任何NSManagedObject
子类实现setValue:forUndefinedKey:
?根据请求添加代码,但由于我只是实现一个不被调用的现有方法,所以我不知道它会有多少帮助。在上下文中:
- (Company*)companyWithDictionary:(NSDictionary*)values{
Company* newCompany = (Company*)[NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:self];
[newCompany setValuesForKeysWithDictionary:values];
return newCompany;
}
在从未调用的
Company
子类中:- (void)setValue:(id)value forUndefinedKey:(NSString *)key{
if([key isEqualToString:idKey]){
[self setValue:value forKey:@"uniqueID"];
}else if([key isEqualToString:descriptionKey]){
[self setValue:value forKey:@"descriptionText"];
}else if([key isEqualToString:timeUpdatedKey]){
[self setValue:value forKey:@"dateUpdated"];
}else{
[super setValue:value forUndefinedKey:key];
}
}