現在、作成しようとしているドキュメントの最適な構造を考えています。ドキュメントは基本的に、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」を作成して、保存したファイルラッパーに表示したいので、保存時にこれらすべてをファイルラッパーにコピーしようとしました...
私が見つけたのは、ファイルが実際に必要なファイル構造でラッパーにコピーされたということでしたが、実際のラッパーが保存されると、これらのファイルはすべて魔法のように消えてしまいました。
偉大な。
そのため、既存のソリューションを破棄し、代わりにファイル ラッパーを使用しようとしました。このソリューションには、新しいドキュメントの作成時にコンテンツ ラッパー ファイル ディレクトリを作成するか、ドキュメントを開くときにコンテンツ ディレクトリ ファイル ラッパーをロードすることが含まれていました。
画像が追加/変更されたとき、このルート コンテンツ ラッパー内に必要なディレクトリ ラッパーを作成し (つまり、まだ存在しない場合は画像ディレクトリ ラッパー、または作成する必要があるその他の中間ディレクトリ ラッパー)、通常のディレクトリ ラッパーを作成しました。メディアのファイル ラッパー。そのファイル名の既存のラッパーが存在する場合は削除します。
ドキュメントの保存は、コンテンツ ファイル ラッパーがドキュメント ファイル ラッパーに追加され、ドキュメントが保存されることを確認するための単なるケースでした。
ええと...そうでした。初めて。ただし、その後の変更、つまり画像の追加、保存を試みると、. 次に、画像を置き換えて保存します。期待どおりに動作せず、最初の保存からの画像のみを表示しました。
それで、私の質問は...まず第一に、上記のアプローチのどれが正しいものであるか、そしてそれらが失敗するために私が間違っていることは何ですか.
そして第二に、何千もの画像を管理することを期待しているように、ファイルラッパーを使用して物事を進める正しい方法です。