我正在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];
}
}