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 エンティティとの関係 (1 対 1) です。
しかし、画像の属性にアクセスしようとすると、これが得られます...
-[_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.
画像属性を削除しようとしても、同じ問題が発生します。