1

NSUserDefaultsエンコードして画像データを保存するために使用します。Documents ディレクトリに保存できることはわかっていますが、コンテンツが大きすぎると、iCloud 同期の問題により App Store で拒否される可能性があります。キャッシュ ディレクトリに保存することもできますが、保存する画像は非常に重要であり、キャッシュ クリア時にそれらを失いたくありません。

をデータ ストレージに大量に使用しているため、アプリが拒否されるのではないかと心配していNSUserDefaultsます。オフライン コンテキスト内でこれを処理する他の方法はありますか?

4

3 に答える 3

4

NSUserDefaults画像の保存には不向きです。これらを の下に保存する必要があり~/Library/Application Supportます。それらをバックアップしたくないと言っているので、iOS App Programming Guideの指示に従う必要があります。

iOS 5.1 以降では、サポート ファイルを /Library/Application Support ディレクトリに保存し、setResourceValue:forKey:error: メソッドを使用して、対応する NSURL オブジェクトに NSURLIsExcludedFromBackupKey 属性を追加します。(Core Foundation を使用している場合は、CFURLSetResourcePropertyForKey 関数を使用して kCFURLIsExcludedFromBackupKey キーを CFURLRef オブジェクトに追加します。) この属性を適用すると、ファイルが iTunes または iCloud にバックアップされなくなります。多数のサポート ファイルがある場合は、それらをカスタム サブディレクトリに格納し、拡張属性をそのディレクトリだけに適用することができます。

于 2012-07-22T21:09:22.430 に答える
2

拒否については言えませんが、NSUserDefaults はほぼ確実に間違っています。(これは、ユーザー設定データ用です。)

Core Data を調べることをお勧めします。

同じことを示唆する最近の議論は次のとおりです。http://sealedabstract.com/code/you-should-use-core-data/

それからのクールな引用:

CoreData.framework にリンクせずに 3 つ以上のオブジェクトをディスクに保存している場合は、間違っています。

それが役立つことを願っています。

于 2012-07-22T21:02:59.997 に答える
0

この質問に対する受け入れられた回答が役立つ場合があります。

あなたの質問に与えられた主なポイント:

ファイルをドキュメントに入れますが、バックアップされないようにフラグを立てます。これを行う方法に関するテクニカルノート (QA1719) があります。

于 2012-07-22T21:11:37.787 に答える