Core Data に格納されている Person オブジェクトを UITableView に入力しています。各人物には、firstName、lastName、およびイメージがあります。画像は、Transformable 型の data と呼ばれるプロパティを持つ別の Image エンティティとの関係です。これは、各人物に関連付けられた画像を保存する場所です。
テーブルに次のものを入力しています:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PersonCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
Person *person = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSMutableString *nameString = [[NSMutableString alloc] init];
if (person.firstName)
{
[nameString appendString:[NSString stringWithFormat:@"%@ ",person.firstName]];
}
if (person.lastName)
{
[nameString appendString:person.lastName];
}
cell.textLabel.text = nameString;
UIImage *image = person.image.data;
cell.imageView.image = image;
return cell;
}
アプリを実行すると、次のエラーが表示されます。
: CGAffineTransformInvert: 特異行列。
テーブルまたはデータベース内のアイテムごとに 1 回。
行をコメントアウトすると:
cell.imageView.image = image;
エラーはなくなります。
何か案は?Core Data にバイナリ データを格納したのはこれが初めてですが、正しく変換されていないのでしょうか?
これが私が画像を保存する方法です:
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
self.person = [Person personWithImage:image inManagedObjectContext:self.context];
と
+ (Person *)personWithImage: (UIImage *)image inManagedObjectContext:(NSManagedObjectContext *)context
{
Image *newImage = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:context];
newImage.data = image;
Person *newPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person"
inManagedObjectContext:context];
newPerson.image = newImage;
return newPerson;
}
ありがとう、
ジェリー