3

NSUserDefaultsを非常に広範囲に使用しています。NSUserDefaults内にユーザーに関する多くの情報の配列を保存し、後で別のビューでそれらを使用しています。

私の質問は、これは間違ったアプローチですか?または、これはAppStoreへの送信時に問題になる可能性がありますか?

ありがとうございました..

4

5 に答える 5

4

NSUserDefaultsに保存できる情報の量や量について、厳格な規則はありません(ただし、安全なデータを保存しないでください)。NSUserDefaultsを悪用してクラッシュを引き起こさない限り、AppStoreから拒否されることはありません。

しかし、別の見方で使用することについてのあなたの発言に混乱しています。NSUserDefaultsは、アプリケーション内のオブジェクト間でデータを転送するのではなく、セッション間で少量のデータを保持することを目的としています。後者に使用している場合は、アプリケーションアーキテクチャを再検討する必要があります。

于 2012-04-10T15:48:03.763 に答える
3

はい、それは間違ったアプローチですが、AppStoreに送信するときに問題になるとは思いません。

おそらくあなたがしなければならないことは、いくつかの構成ファイルを追加し、それを管理するか、プロジェクトでコアデータを使用して、プロジェクトを知っているだけでより正確な答えを与えることです。

よろしくお願いします。

NSUserDefaultsを使用するときに、より適切な説明を追加するために編集します

NSUserDefaultsを使用して構成を保存するだけで、たとえば、背景のユーザーのお気に入りの色など、ユーザーにデフォルトで設定されます。

NSUserDefaults、パスワード、一時的な情報を保存したくない場合、ゲームをしている場合は、ランキングなどをそこに保存しません。

アップルドキュメントから

NSUserDefaultsクラスは、デフォルトシステムと対話するためのプログラムインターフェイスを提供します。デフォルトのシステムでは、アプリケーションはユーザーの好みに合わせて動作をカスタマイズできます。たとえば、アプリケーションが表示する測定単位や、ドキュメントが自動的に保存される頻度をユーザーが決定できるようにすることができます。アプリケーションは、ユーザーのデフォルトデータベース内の一連のパラメーターに値を割り当てることにより、このような設定を記録します。パラメータは、起動時のアプリケーションのデフォルト状態またはデフォルトでの動作方法を決定するために一般的に使用されるため、デフォルトと呼ばれます。

于 2012-04-10T15:47:18.057 に答える
1

userdefaultsにあまりにも多くのデータを保存することは好ましくありません。代わりに、plistまたはCore Dataを使用してデータを保存できます(これは優れたCore Dataチュートリアルです)。また、NSUSerDefaultsはオブジェクトの変更と削除が難しいため、ユーザー名とパスワードなどをできるだけ多く保存するためだけに使用するようにしてください。

于 2012-04-10T15:48:27.217 に答える
1

App Storeから拒否されることはありませんが、それを行うのはあまり良い習慣ではありません。結果と値の保存には「コアデータ」の使用を検討してください。そして、viewController間の通信にはNSNotificationsほとんど使用できません。NSUserDefaults

NSUserDefaults主に異なるVC間の通信に使用している場合は、 Delegates(メッセージパッシング(または)コールバック)を使用することをお勧めします。

于 2012-04-10T16:10:54.850 に答える
0

これが便利なスレッドです。基本的に、プロジェクトフォルダーに移動し、pListファイルのサイズを確認します。

私が役に立ったと思った回答は、プロジェクトファイルに移動して、plistファイルのサイズを確認することでした。

5つのオブジェクトはほとんど何もありません。大丈夫です!


私のマシンでは、ユーザーのデフォルトに約28メガのデータがあります。それはまったく問題を引き起こしていません。


配列の一般的なプログラミング経験から、要素のサイズにもよりますが、1000に入ると、パフォーマンスが急速に低下し始めると思います。したがって、プログラムでは、数百の要素を格納することに問題はありません。これは、私があなただったら、おそらく後でではなく、より早くsqlite3データベースまたはcoredataを使い始めるだろうと言っていました。

于 2017-01-12T14:48:55.277 に答える