2011-01-14 18 views
0

私はここ数ヶ月間にコアデータに嫌われていて、ユーザー設定などのアプリにデータを保存するために使用しました。それは素晴らしい作品ですが、私は将来の更新で問題を抱えてしまうのではないかと心配しています。iPhoneアプリユーザー設定 - 推奨されるアプローチは何ですか?

私のアプリで設定を保存する3つの方法を知っています - 1.コアデータ。 2. NSUserDefaults。 3.ビルドイン設定コンポーネントを使用する。

このアプローチの賛否両論を理解するのが大好きです。

おかげ シャニー

+0

hmmm少し話題ですが、どこからコアデータを学ぶことができますか?私はいつもplistとpreferencesが十分であると思っていたので、常にコアデータを避けました...(そして、それはSQLクエリーを行うことができるので、利点やコアデータが分かります) –

+0

こんにちは。私はアプリをplistsで構築していたので、コアデータへの移行が私の人生をもっと楽にしてくれ、アプリのためにもっと多くのオプションを開いたと言わなければならない。リンゴのサンプルプロジェクトを読んで、コアデータを使って簡単なアプリを試してビルドすることで、私は個人的に学びました。それは時間がかかりました。私はまだ多くのことを学ぶ必要がありますが、一番良い方法は試して試してみることです。がんばろう。 – shannoga

答えて

4

編集注:私の前のリンク、Implementing Application Preferencesは、壊れています。この返信の残りの部分はまだ適用されます。ただし、NSUserDefaultsと似ていますが、別の方法でstore data in iCloudにすることもできます。あなたは、Apple独自のガイドを参照することができます

About Preferences and Settings

まずあなたが望むただし、設定を保存することができます:それはちょうど、ユーザーデータです。 NSUserDefaultsとCore Dataの間の選択は、APIの間にあります.APIは、ユーザーのプリファレンスを扱うように特別に設計されています。しかし、(技術的に)INIファイルを使用することができます。そのためには3つ以上の方法があります。

第2に、NSUserDefaultsと「組み込み設定コンポーネント」は実際には同じものです。設定アプリを使用すると、そのAPIを使用してアプリでアクセスするNSUserDefaultsにプリファレンスが保存されます。

あなたがでない理由は、組み込みの設定アプリを使用したいと考えています。ユーザーがこれらの設定を変更するのは面倒です。ユーザーが頻繁に変更したい設定がある場合は、アプリ内でその設定を行うことができます(音楽のオン/オフ、プレーヤー名の変更など)。また、あなた自身のアプリケーションを完全に制御できるので、AppleがSettings.appで提供するものよりも柔軟なGUIを持つことができます。

実際には設定の保存方法ではなくGUIの問題です。

Core DataまたはNSUserDefaultsを使用する場合は、私が言ったように、ユーザーの好みやローベースのユーザーデータ用に設計されています。 NSUserDefaultsを使うとデフォルト設定ができ、新しい設定を簡単に追加でき、組み込み設定システムをサポートします。それはまた非常に単純です:それは単にプロパティリストを読み込みます。一方、コアデータには、永続ストアと管理オブジェクトコンテキストスタック全体が必要です。

要約:NSUserDefaultsを設定に使用し、設定を変更する頻度と特定のニーズに基づいて、組み込みの設定アプリと独自のコントロールパネルを選択します。

+0

こんにちは。まずは、ありがとうございます。あなたはまだアプリケーションがコアデータを使用していてもNSUserDefaultsを使うほうが好きですか?つまり、ユーザーの好みに合わせて他のエンティティを設定するだけです。 – shannoga

+0

はい私はそうです! NSUserDefaultsは、設定がどのように動作するかをきちんとフックする、とても軽量なシステムです。 NSUserDefaultsでは、[[NSUserDefaults sharedUserDefaults] stringForKey:@ "kSettingsKey"]と同じくらい簡単に設定できます。 - Core Dataで同じことを行うには、オブジェクトコンテキストを使って、要求や永続的なストアを取得する必要があります... – vicvicvic

+0

こんにちはvicvicvic、 NSUserdefault APIを使用する方法がありますが、standardUserDefaultsオブジェクトでは使用できません。私は設定を自分のアプリケーションに保存して、アプリケーションが削除されたときにシステムの設定を保持しないようにしたい。 なぜなら、ブックの各ページの値を保存したいからです。グローバルシステム環境設定に何千もの設定を入れたくないからです。 – CedricSoubrie

関連する問題