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];
}
}