2011-10-28 6 views
21

コアデータへのUIImageの保存については、hereのように多く説明しましたが、それはpre-ios5でした。外部ストレージフラグが作成されたので、別のエンティティとして、またはディスク上にUIImageを直接エンティティに格納することをお勧めしますか?新しい外部ストレージフラグを使用したコアデータへのUIImageの保存

Hereは、外部ストレージオプションを説明するソースです。

答えて

32

Core Data Release Notes for iOS 5.0

有効にすると、それはデータベースに直接データを保存したり、それはあなたのために管理して 別のファイルにURIを保存する必要があります 場合、Core Dataは、ヒューリスティックあたりの値に基づき決定します。このオプションを使用すると、 バイナリデータプロパティの内容に基づいてクエリを実行することはできません。

そして、あなたのリンクExternal Binary Dataから

は、ヒューリスティックは、データベースに格納されている1メガバイトより小さい

オブジェクトのようです。大きい方のオブジェクトが の場合、外部ファイルが作成され、データベース には参照が格納されます。

したがって、次のアドバイスがまだ有効である:同じテーブルでCoreData : store images to DB or not?

  • < 100キロバイトストア避けるために関係を介して結合した別のテーブル内の関連するデータ
  • < 1メガバイト店など不必要にロードする
  • 1mbディスクに格納されていて、コアデータ内に参照してください

フラグセットコアデータそのアドバイスに従うと、自動的に画像を保存するには>別のディスクファイルとして1メガバイト

+1

そのような場合、外部ストレージがそのケースを考慮していないため、100kb-1mbの範囲にある場合に備えて別のエンティティに格納する必要があります。 –

+1

注意:外部の画像ストレージにバグがあり、削除するとクラッシュすることがありますが、時には:http://stackoverflow.com/questions/7930427/error-uiimage-deleteexternalreferencefrompermanentlocation-unrecognized-se –

+3

外部ストレージに別のバグがあります。移行。新しいモデルを作成して軽量の移行を使用しようとすると、外部ファイルに保存されているすべての「バイナリデータ」が失われます。 – zirinisp

関連する問題