私は、アプリケーション状態、特にリスト内の選択された項目をコアデータまたはNSUserDefaultsに保存する必要があるかどうかを判断しようとしています。NSUserDefaultsの代わりにCore Dataにアプリケーション状態が含まれるのはいつですか?
一般的に私は、アプリケーションの設定と状態がNSUserDefaultsに残っている必要があり、モデルレベルのデータはCore Dataなど他の場所でも保持されるべきだと考えています。これまでの私のモデルは:
- データはまったく保存すべきですか?アプリケーションがマルチドキュメントであれば、設定は希望
- :ユーザーが合理的にそれがあることを期待していない場合は、(例えば、カーソル位置がテキストエディットで保存されていない)
- NSUserDefaultsを、それを捨てますすべての文書に適用さ
- それはデータがモデルの外にデータを持つ
- 好みで設定されるだろうと考えますテストのために理にかなっている
- モデルレベル(1つのモデル店といくつかのデフォルトを交換します)の
- データは明らかにモデルレベルのオブジェクト
- データの属性として所属はNSUserDefaultsに格納すると、パフォーマンス上の問題を引き起こすことに十分な大きさである
- ことは困難または時間集約的に利用者のためになります再作成したデータを(彼らは間違いなく、この情報「データ損失」の損失を検討する)
私はコアデータにおけるいくつかのエンティティのソート順を格納する予定。この情報(すなわち、「sortIndex」または「order」属性)がなければ、各エンティティインスタンスは、ユーザデフォルトからのデータで補強されなければならない。
ただし、モデルに状態を格納するのは滑りやすい斜面のようです。並べ替え順序を格納する場合は、リストの状態の両方であるため、選択を格納することも適切です。私のユースケースの選択データは実際にはかなり大きいかもしれません。具体的には、1つのリスト内のアイコンは、それぞれのサブリスト内の選択に依存する。
NSUserDefaultsとデータモデルの関係で誰かが描くハードラインはありますか?
私の場合はライブラリベースのシナリオに該当するiPhoneアプリです。私は仮説的なマルチドキュメントアプリを検討する精神的モデルが好きですし、その変更がアプリを汚くするかどうかも気に入っています。私の場合は、サブリストを選択すると上位リストのビューが変更されるため(具体的には、サブビューは、上位ビューの項目の隣にどの画像が表示されるかを変更します)。 並べ替えに関して、私はソート順がユーザー定義であることを意味しました。つまり、iTunesでプレイリストを作成するなど、リストを任意に並べ替えることができます。 – orque
「文書を汚すのですか?」を構築すると、「データに変更を加えると、元に戻すスタックに追加されますか」を追加したいと思います。元に戻すとドキュメントベースとライブラリベースの両方のアプリケーションに使用できるので、素晴らしいヒューリスティックのようです。 – orque