2012-05-07 16 views
1

このコードは、uiimageをコアデータに保存する必要があります。画像は、それ自身のエンティティに保存され、ここで私はカスタムセルにuiimageviewにUIImage in core data

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

これだけそれを置くために、それを取り戻すためにしようと別のエンティティ(関係)

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

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

答えて

4

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

+0

wierdの部分は他のどこかで(画像(小さなpng)を保存してください)変形可能であるということです...そこには... – user1028028