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 エンティティとの関係 (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.

画像属性を削除しようとしても、同じ問題が発生します。

4

2 に答える 2

1

生成しているクラッシュのタイプを考慮して、コア日付モデリング ツールを使用する際に適切なクラス名を割り当てていることを確認してください。デフォルトでは、エンティティ名を持つサブクラスは作成されず、キーと値のコーディングを使用してプロパティ値にアクセスする必要があります。モデリング ツールを実行し、エンティティを選択して、ユーティリティ パネルのモデル データ インスペクターでクラス名を確認します。

于 2012-09-10T15:56:24.210 に答える
0

まあ、それは完全に奇妙でした。

エンティティを削除して再度追加しました...それでも同じ問題です。

もう一度削除して、「Image」の代わりに「StoredImage」というエンティティを追加したところ、まったく問題なく正常に機能しました。

しかし、すべての助けをありがとう。

于 2012-09-10T16:32:00.840 に答える