2009-07-19 11 views
6

MacOSX用のアプリケーションをCocoa/Objective-Cで作成する際に、ユーザーが入力したデータを保存したいと考えています。現時点では、インストールごとに1人のユーザーしか存在しません。しかし、インストールごとに複数のユーザーであった場合、どのようにストレージ方法が変更されるかを知りたいと思います。永続的ストレージCocoa/MacOSX

インストールあたり1人のユーザーの場合、永続ストレージ用にSQLLiteに固執すべきですか、それとも推奨されますか?

インストールごとに複数のユーザーが使用できるようにするには、どのような永続的な記憶方法を使用するのですか?

答えて

7

あなたはコアデータを使用して、ユーザーごとの永続ストアを作成することができます(中〜/ライブラリ/アプリケーションデータ/私のアプリ/)

+0

コアデータを使用して新しいアプリケーションを開発することはほとんどありませんが、そうしないとかなりの理由があります。クラウドに格納されたデータは気になりますが、おそらくCore Dataをローカルキャッシュとして使用すると思います。また、Core Dataは高速です。 –

+0

異なるユーザー間でデータを共有していると、状況が複雑になる可能性があります。しかし、常にドキュメントベースのコアデータがあります... –

+0

Ok。そして私はこれをどのようにすることができますか? – mthama

1

どのような種類のデータを保存したいですか?もちろん、sqliteを使用して複数のユーザーのデータを保存することもできます(Firefoxではこれを行います)。

あなたのデータに応じて、通常のファイル/文書に保存したい場合がありますか? NSCodingプロトコルと抽象的なNSCoderクラスを見てください。または、文書のアーキテクチャ(NSDocumentControllerNSDocument、およびNSWindowController)をチェックしてください。

1

のみ現時点では、インストールごとにユーザーが存在します。しかし、インストールごとに複数のユーザーであった場合、どのようにストレージ方法が変更されるかを知りたいと思います。

デフォルトでは、ユーザーのホームディレクトリ内のデータのみを保存する限り、フォーマットは無関係です。

プロパティリスト、コアデータ(アーキテクチャー上の決定 - あなたのアプリケーションをコアデータに基づいている、または使用しない)、SQLite、NSKeyedArchiver、独自のカスタムフォーマットがあります。

2

また、内部ストレージメカニズムとしてNSDictionaryを使用し、[NSDictionary writeToFile:atomically:]を使用してプロパティリストファイルに書き出すこともできます。私の友人は、辞書を神のデータ構造(頬の舌)と呼ぶのが好きです。

データサイズが適度でない場合、これにはいくつかの利点があります。人間が読み取り可能で、人間が書き込み可能で、変更可能です。

+1

NSDictionariesをモデルオブジェクトとして使用すると、AppleScriptサポートを実装するときに痛みを感じます。それぞれのオブジェクトが自分自身を表す辞書を生成し、そのように生成された辞書から新たに初期化することができるようにする方がよい。 –

0

ローカルに保存するのではなく、クラウドにデータを保存し始めます。あなたのアプリがiphoneやipadでも使われているのなら、ipadが出てきます。クラウドにデータを保存すると、iphoneアプリとipadの両方で同じデータを使用できます。ローカルに保管すると、明らかに、iphoneアプリとipadアプリは同じデータを使用できません。

+0

Mac OS XアプリケーションはiPhone/iPod Touch/iPadで実行できません。ココアアプリ!= iPhoneアプリ。 ;) – mipadi

+0

mipadi:いつか質問者がiPhoneやiPadのバージョンのアプリを起動する可能性を考慮して、朴Parkさんがこれを提案しているかもしれません。私は、クラウドにデータを完全に格納することを推奨しません。雲は蒸発する方法があります。 Macバージョンを同期ハブとして使用すること(少なくともThe Cloudの代替オプションとして)は良いでしょう。 –

関連する問題