2012-05-10 3 views
1

私は自分のアプリケーションデータを保存するための最良の方法を決定するのが難しいです。それぞれがカスタムオブジェクトの配列を含むカスタムオブジェクトの配列を保存するのが最善の方法ですか?

レシピアプリです。

私は、カテゴリタイトルのNSString変数と(NSString変数を3つ含む)RecipeクラスオブジェクトのNSMutable配列を含むカテゴリクラスオブジェクトの配列を持っています。カテゴリーの

配列が含まれています:ここ

は私のアプリモデルの半視覚的な表現である

  • カテゴリオブジェクト1 - >は、文字列のタイトルとレシピの可変配列
  • カテゴリーオブジェクトが含まれていますオブジェクト2 - >レシピオブジェクトの文字列タイトルと可変配列を含む

...

など

ユーザーは新しいレシピを作成することができ、レシピオブジェクトは選択したカテゴリオブジェクト内に保存されます。

アプリロードでは、x個のカテゴリが作成されます(numberOfCategories intの値に応じて)。私はレシピを適切なカテゴリオブジェクトに復元したいと思います。

うまくいけば、私はNSUserDefaultsのやり方でNSCodingのやり方でカスタムオブジェクトのエンコード/デコードを行っていましたが、カスタムオブジェクトの配列を含むカスタムオブジェクトの配列があるため混乱していました。

コアデータを使用するプロジェクトを変換するのに最適なルートであれば、私はこのアイデアには触れていませんが、それは私のアプリケーションのシンプルさのためにあまりにも複雑すぎたようです。 )。

さらに詳しい説明が必要な場合はお知らせください。

答えて

1

CoreDataを使用してください。少なくとも2つの別個のエンティティが必要で、それらの間に関係を確立するような音がします(RecipeとRecipeObject)。 NSUserdefaultsは、永続化する必要のある少量のデータを格納するのに最適ですが、実際のユースケースにはあまり適していません。

また、MagicalRecordMOGeneratorをチェックしてください。これらのオープンソースライブラリはどちらも、CDでの作業をより楽しく生産的にします。

+1

コアデータルートに行きました。学習曲線の少し後、それは汗ではなかった。間違いなく最高のルート。 Ray Wenderlichのチュートリアルは最も親しみやすいものです。提案とGitHubのリソースをありがとう。 – LazerLex

0

オブジェクトをXMLとしてシリアル化することをお勧めします。これは、階層データを格納するのに適した方法です。