1

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;
}

ありがとう、

ジェリー

4

1 に答える 1

2

OK、運が良かったのでこれを理解しました。私のuitableviewはセル内の画像を使用しており、そこにフルサイズのカメラ画像を入れていましたが、もちろんいくつかのメモリの問題が発生しました。画像のサイズを960x640に変更し始めるとすぐに、そのランダムなCGAffineTransformInvertエラーはなくなりました。

そもそもなぜ起こったのかはまだわかりませんが、今はなくなっているので大した問題ではないと思います。

于 2012-07-13T22:19:23.453 に答える