1

このコードは、amuiimageをコアデータに保存する必要があります。画像はそれ自体のエンティティに保存され、別のエンティティに高く評価されます(関係)

   NSEntityDescription *imageEntity = [ NSEntityDescription insertNewObjectForEntityForName:kImage inManagedObjectContext:self.context];
    [imageEntity setValue:self.image forKey:kPicture];

    [newPerson setValue:imageEntity forKey:kPicture];

    NSError *error;
    if (![self.context save:&error]) {
        NSLog(@"Whoops, couldn't save new associate: %@", [error localizedDescription]);
    }

ここで私はそれを取り戻して、カスタムセルのuiimageviewに入れようとします

  Person *crt = [self.fetchController objectAtIndexPath:indexPath];
    cell.name.text = crt.name;
    Image *img = crt.picture;
    cell.image.image = img.picture;

これは、画像が最初に追加されたときにのみ機能します...アプリを再起動した後、画像は再び表示されません。それはなぜですか?変換可能な属性として設定されます

4

1 に答える 1

4

UIImageバイナリデータとしてのみ追加できます。したがって、必要なことは、エンティティの属性タイプをに設定し、メソッドをBinary Data使用して、このCoreGraphics'方法UIImagePNGRepresentation(UIImage *image)でそれを返しNSData、保存することです。そして、データベースからそれを抽出したい場合は、を取得し、メソッドNSDataを使用して画像を作成します[UIimage imageWithData:(NSData *data)]
ただし、最善の実装は、画像へのローカルパスのみをデータベースに保存することだと思いますが、実際のファイルは、アプリのDocumentsフォルダー内のフォルダーに保存されます...単なる提案です。

于 2012-05-07T20:57:58.407 に答える