2011-01-27 10 views
2

私は、「プロジェクト」の作成に使用できるMac OS Xアプリケーションを構築しています。ユーザーがプロジェクトを保存すると、イメージファイル、テキストファイル、sqliteファイルなど多くのリソースが保存されます。NSBundleは、プロジェクト文書を保存するために使用できますか?

プロジェクトごとにドキュメント内にフォルダを作成することも、そのフォルダ内にすべてのプロジェクトを配置することもできますプロジェクトを開くために使用される単一のプロジェクトファイルのみを含めるだけです。

私は使用したいNSBundleについて読んだことがあります。しかし、私はアプリケーションバンドルの文脈でしか読んだことはありません。このようにNSBundleを使用することは可能ですか?ユーザーは1つのファイルのみを表示し、好きな場所に移動できます。

NSBundleを使用して、私がしようとしていることを行うのは意味がありますか?あるいは、これを行う別の方法がありますか?

(私はMacOS Xのプログラミングにかなり新しいです)

UPDATE

私は、これは私がやってみたいものです、iPhotoは「iPhotoのライブラリ」を保存するために、このメソッドを使用しています信じています私のアプリケーションは、私が探しているはずのNSBundleですか?

+0

Appleの多くのアプリケーションでは、ドキュメントバンドルを使用しています。古いバージョンのiWorkは圧縮されていないバンドルを作成し、iWork '09は最終バンドルを圧縮します。 (これをテストするには、Pagesドキュメントの名前を* .zipに変更してください。アーカイブユーティリティがドキュメントバンドルに解凍します) –

答えて

4

はい、以前はかなりのアプリで使用できました。この方法は、this documentに記載されています。アプリのInfo.plistに明示的に宣言されると、結果のバンドルが1つのファイルとして表示されます。

しかし、私はそれをすることをお勧めできません。アップル独自の基調講演ではこれまでバンドルアプローチを使用していましたが、もはやそれを使用していません。同様にOmniGraffle(長い歴史を持つOS X上の図形作成アプリケーション)は、プロジェクトを保存するためにバンドルを使用していましたが、それもやめました。

なぜなら、アップル以外の電子メールソフトウェアやブラウザなどでは、バンドルは引き続きディレクトリとして認識されますが、Finderはファイルとして表示します。ユーザーがブラウザの中でGmailで作っている電子メールにバンドル形式の文書を添付したいと思ったら、それは混乱となるでしょう。それは多くの人を混乱させた。

これは可能ですが、お勧めしません。 1つ目の方法は、圧縮されたバンドルをユーザーが表示できるファイルとして使用し、ユーザーが一時的なディレクトリーにそのファイルを開くときに解凍することです。次に、NSBundleおよび/またはNSFileWrapper apisを使用して、内部のファイルにアクセスできます。

+0

このアプローチの背景を聞いていただきありがとうございます。私はあなたが非常に魅力的に言及したジップ法を見つける。私のアプリケーションのユーザーは、自分の仕事をお互いに分かち合うことに興味があるかもしれません。そして、将来、これはMacとWindowsユーザーの間で行われるかもしれません。 – Vamos

0

NSBundleクラスはアプリケーションバンドルを表し、アプリケーション内のリソースにアクセスするために使用できますが、ユーザーデータではなくアプリケーションデータ用です。

イメージファイルの場合など、このタイプを保存する方法があります。NSDataを使用してイメージデータをディスクに保存し、テキストファイルの場合はこのメソッドを使用できますwriteToFile:atomically:encoding:error:

あなたは非常によく、これはあなたのニーズに合うかどうかを確認するために、コアデータhttp://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreData/cdProgrammingGuide.html)、ユーザーのデータモデルを管理するための非常に良いフレームワークを見てみたいことがあります。

+0

アプリケーションバンドルだけでなく、フレームワークとほとんどのプラグインもバンドルです。 –

+0

確かに、良い点。 Rewのケースでは、これはアプリケーションバンドルです。 –

+0

iPhotoの例のように、アプリケーションで作成したドキュメントをバンドルを使って保存する方法について話しています。 – Vamos