cocoa - NSManagedObject 子类和 setValuesForKeysWithDictionary :

标签 cocoa cocoa-touch core-data key-value-coding

我正在使用以下方法初始化 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/

相关文章:

ios - 文本在 UILabel 中开始的位置

ios - 将 NSStrings 和 NSNumber 附加到 NSMutableArrays 并制作 NSMutable 字典

ios - 如何在我的无处不在的容器中获取所有可用的持久存储?

ios - 我应该在 iOS/OS X 应用程序中的哪里初始化我的单例?

Objective-c KVC : Collection Accessor Patterns for To-Many Properties, 我如何使用它来增强我的代码?

iphone - 按钮 titleLabel 设置为隐藏 YES,触摸时重新出现

objective-c - 核心数据 : Abstract Entity in Fetch Request

iphone - 迁移对象模型时在 coredata 中添加具有递增值的属性

cocoa - 在 3d 中使用核心图像

objective-c - 相当于 IB 中自动调整大小蒙版锚定选项的代码是什么?