核心数据图像“无法识别的选择器......”

时间:2012-09-10 15:51:44

标签: iphone ios core-data uiimage

我有一个名为Image的实体的数据模型。这将用于存储图像。

以前我将图像作为特定实体的属性。

我设置了可转换的东西,一切正常。

但是,现在我已将它移到一个单独的实体中,我一直在收到错误。

所以......这是Image.m文件的内容。

#import "Image.h"
#import "Person.h"

@implementation ImageToDataTransformer


+ (BOOL)allowsReverseTransformation {
    return YES;
}

+ (Class)transformedValueClass {
    return [NSData class];
}


- (id)transformedValue:(id)value {
    NSData *data = UIImagePNGRepresentation(value);
    return data;
}


- (id)reverseTransformedValue:(id)value {
    return [[UIImage alloc] initWithData:value];
}

@end

@implementation Image

@dynamic image;
@dynamic createdDate;
@dynamic person;

@end

当我保存它时,它不会抱怨我创建它时它没有抱怨,我甚至可以在Person实体中看到它作为对象。

(Person *) $0 = 0x1002dec0 <Person: 0x1002dec0> (entity: Person; id: 0x4f8f30 <x-coredata://2800C028-8745-45FE-854B-5783FF3FC173/Person/p6> ; data: {
    avatar = "0x1007e540 <x-coredata://2800C028-8745-45FE-854B-5783FF3FC173/Image/p1>";
    createdDate = nil;
    email = nil;
    firstname = Blah;
    id = "1234567890987654321234567890";
    lastName = Blah;
    updatedDate = nil;
})

头像属性是与图像实体的关系(一对一)。

但是如果我尝试访问图像的任何属性,我就会得到这个......

-[_NSObjectID_64_2 createdDate]: unrecognized selector sent to instance 0x1007e540
-[_NSObjectID_64_2 image]: unrecognized selector sent to instance 0x1007e540
等等......

生成错误的代码......

NSFetchRequest *request = [NSFetchRequest fetchRequestForEntityName:@"Person"];

[request setPredicate... blah];
NSArray *results = [context executeFetchRequest...];

Person *person = [results objectAtINdex:0];

NSLog(@"%@", person.firstName); //this works fine.
NSLog(@"%@", person.avatar.createdDate); //this crashes.

尝试删除图片属性并仍然遇到同样的问题。

2 个答案:

答案 0 :(得分:1)

鉴于您正在生成的崩溃类型,请确保在使用核心日期建模工具时分配正确的类名。默认情况下,它不会创建具有实体名称的子类,并且您可以使用键值编码来访问属性值。去做你的建模工具,选择实体,并检查实用工具面板上模型数据检查器上的类名。

答案 1 :(得分:0)

嗯,这完全是奇怪的。

我删除了实体并重新添加了它......仍然是同样的问题。

我再次将其删除并添加了一个名为“StoredImage”的实体而不是“Image”,它完好无损。

感谢所有的帮助。