Я инициализирую подкласс 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];
}
}