我正在使用以下方法初始化 NSManagedObject
子类:
- (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 绝对没有任何内在的东西可以阻止这种情况;我正在我正在开发的应用程序中执行此操作。您可以发布更多代码吗?
还有一个想法:您确定是 setValue:forUndefinedKey:
引发了异常吗?对于托管对象,我很确定您还需要实现 valueForUndefinedKey:
(getter)才能使事情正常工作。
关于cocoa - NSManagedObject 子类和 setValuesForKeysWithDictionary :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834125/