我初始化使用NSManagedObject
子類:NSManagedObject子類和setValuesForKeysWithDictionary:
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues
我還故意給它未定義的鍵,這當然應該拋出異常。
所以,我已經實現:
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
如果關鍵是不確定的,我把它映射到正確的鍵。
但是,我的實現永遠不會被調用,而是使用NSManagedObject
的實現,這又會導致仍然引發異常。
是否有阻止setValuesForKeysWithDictionary:
使用setValue:forUndefinedKey:
的任何NSManagedObject
子類實現的行爲(或錯誤)?
添加代碼的要求,但因爲我只是執行現有的方法,該方法不會被調用,我不知道會有多大的幫助是:
在上下文:
- (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];
}
}
是的,我看到它在堆棧跟蹤。這也是NSManagedObject的實現。 – 2009-12-02 17:09:41
我還沒有實現valueForUndefinedKey :.我會嘗試,但是我不明白爲什麼會通過失敗者。 – 2009-12-02 17:10:27
增加了一些代碼... – 2009-12-02 17:18:17