0

画像をコアデータに追加し、必要に応じてロードしようとしています。現在、次のように NSImage をコア データに追加しています。

Thumbnail *testEntity = (Thumbnail *)[NSEntityDescription insertNewObjectForEntityForName:@"Thumbnail" inManagedObjectContext:self.managedObjectContext];
NSImage *image = rangeImageView.image;
testEntity.fileName = @"test";
testEntity.image = image;
NSError *error;
[self.managedObjectContext save:&error];

Thumbnail はエンティティ名であり、Thumbnail エンティティの下に fileName(NSString) と image (id - transformable) という 2 つの属性があります。

私は以下のようにそれらを取得しようとしています:

NSManagedObjectContext *context = [self managedObjectContext];

NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];

NSEntityDescription *imageEntity = [NSEntityDescription entityForName:@"Thumbnail" inManagedObjectContext:[context valueForKey:@"image"]];

[fetchRequest setEntity:imageEntity];

NSError *error;

NSArray * array = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

if (array == nil) {

    NSLog(@"Testing: No results found");

}else {



   _coreDataImageView.image = [array objectAtIndex:0];
}

私はこのエラーで終わります:

     [<NSManagedObjectContext 0x103979f60> valueForUndefinedKey:]: this class is not key value coding-compliant for the key image.

画像は追加されましたが、取得できませんでした。
これをどうやって進めるかについて何か考えはありますか?私はそれを正しくやっていますか?

4

1 に答える 1

3

エラーはこの行にあります

NSEntityDescription *imageEntity = [NSEntityDescription entityForName:@"Thumbnail"
          inManagedObjectContext:[context valueForKey:@"image"]];

valueForKey:@"image"管理オブジェクト コンテキストには適用できません。取得したオブジェクトに適用する (または取得したオブジェクトのimageプロパティを使用する) 必要があります。

エラーが発生した場合にのみexecuteFetchRequest:返されることにも注意してください。nilエンティティが見つからない場合は、空の配列を返します。

NSEntityDescription *imageEntity = [NSEntityDescription entityForName:@"Thumbnail" inManagedObjectContext:context];
[fetchRequest setEntity:imageEntity];

NSError *error;
NSArray * array = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (array == nil) {
    NSLog(@"Testing: Fetch error: %@", error);
} else if ([array count] == 0) {
    NSLog(@"Testing: No results found");
}else {
   Thumbnail *testEntity = [array objectAtIndex:0];
   NSImage *image = testEntity.image;
   _coreDataImageView.image = image;
}
于 2012-12-28T07:46:32.750 に答える