我有一个名为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.
尝试删除图片属性并仍然遇到同样的问题。
答案 0 :(得分:1)
鉴于您正在生成的崩溃类型,请确保在使用核心日期建模工具时分配正确的类名。默认情况下,它不会创建具有实体名称的子类,并且您可以使用键值编码来访问属性值。去做你的建模工具,选择实体,并检查实用工具面板上模型数据检查器上的类名。
答案 1 :(得分:0)
嗯,这完全是奇怪的。
我删除了实体并重新添加了它......仍然是同样的问题。
我再次将其删除并添加了一个名为“StoredImage”的实体而不是“Image”,它完好无损。
感谢所有的帮助。