0

我有一个名为 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;
})

avatar 属性是与 Image 实体的关系(一对一)。

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

-[_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.

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

4

2 回答 2

1

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

于 2012-09-10T15:56:24.210 回答
0

嗯,这完全是奇怪的。

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

我再次删除它并添加了一个名为“StoredImage”而不是“Image”的实体,它运行良好,完全没有问题。

感谢所有的帮助。

于 2012-09-10T16:32:00.840 回答