2

現在、作成しようとしているドキュメントの最適な構造を考えています。ドキュメントは基本的に、sqlite をストアとして使用するコア データ ドキュメントですが、Apple が提供する NSPersistentDocument+FileWrapperSupport を使用してファイル ラッパー サポートを有効にします。

ドキュメントは、画像、ビデオ、オーディオ ファイルなどのメディアを多用し、数千のファイルが含まれる可能性があります。だから私がやろうとしているのは、次のような構造を作成することです:

/myfile.ext/
/myfile.ext/store.sqlite
/myfile.ext/content/
/myfile.ext/content/images/*
/myfile.ext/content/videos/*
/myfile.ext/content/audio/*

まず、一時ディレクトリを作成し、そこにすべてのメディアを配置するというルートをたどりました。基本的にパスとファイル名「/content/images/image1.jpg」を作成して、保存したファイルラッパーに表示したいので、保存時にこれらすべてをファイルラッパーにコピーしようとしました...

私が見つけたのは、ファイルが実際に必要なファイル構造でラッパーにコピーされたということでしたが、実際のラッパーが保存されると、これらのファイルはすべて魔法のように消えてしまいました。

偉大な。

そのため、既存のソリューションを破棄し、代わりにファイル ラッパーを使用しようとしました。このソリューションには、新しいドキュメントの作成時にコンテンツ ラッパー ファイル ディレクトリを作成するか、ドキュメントを開くときにコンテンツ ディレクトリ ファイル ラッパーをロードすることが含まれていました。

画像が追加/変更されたとき、このルート コンテンツ ラッパー内に必要なディレクトリ ラッパーを作成し (つまり、まだ存在しない場合は画像ディレクトリ ラッパー、または作成する必要があるその他の中間ディレクトリ ラッパー)、通常のディレクトリ ラッパーを作成しました。メディアのファイル ラッパー。そのファイル名の既存のラッパーが存在する場合は削除します。

ドキュメントの保存は、コンテンツ ファイル ラッパーがドキュメント ファイル ラッパーに追加され、ドキュメントが保存されることを確認するための単なるケースでした。

ええと...そうでした。初めて。ただし、その後の変更、つまり画像の追加、保存を試みると、. 次に、画像を置き換えて保存します。期待どおりに動作せず、最初の保存からの画像のみを表示しました。

それで、私の質問は...まず第一に、上記のアプローチのどれが正しいものであるか、そしてそれらが失敗するために私が間違っていることは何ですか.

そして第二に、何千もの画像を管理することを期待しているように、ファイルラッパーを使用して物事を進める正しい方法です。

4

1 に答える 1

0

それだけ多くのメディアが使用されているため、メディアがドキュメントに存在するか、メディアへの参照のみがドキュメントに含まれ、メディアが管理されているライブラリ/リポジトリなどの他の場所に存在するかをユーザーが制御できるようにする必要があります。あなたの申請。次に、すべての参照が解決された (場合によっては何倍も大きい) コピーを保存できます。

ユーザーがドキュメントを電子メールに添付しようとして混乱しないように、任意のディレクトリを圧縮/解凍することをお勧めします。私は、iWork がしばらく前からドキュメント バンドルでこれを行ってきたと思います。

あなたが何をしているのかを示すコードを提供していないので、あなたが間違っていることについては誰も言えません。

ディスク上のファイルを選択し、それらのファイルをファイル ラッパーを使用してドキュメントに保存できる 1 回限りのアプリケーションを作成してみませんか? これにより、アプリケーションの他の問題から干渉されることなく、この機能に取り組むことができます。ファイル ラッパーの使用方法を理解したら、コードを元に戻すか、動作する新しいコードを記述することができます。

于 2010-09-25T01:15:18.863 に答える