iPhone アプリケーションに同梱する必要のあるリソース (zip 形式) がいくつかあります。アプリを初めて起動するときは、この zip ファイルを Documents フォルダーに移動またはコピーして、そこで解凍する必要があります。その後、ユーザーはアプリケーションからこのパスにさらにファイルを追加できます。誰かがこれを達成する方法を提案できますか?
ありがとう!
上記のコメントに基づいて:
複数のファイルがあるので、圧縮されたリソースを追加したい理由。圧縮しない場合は、ファイルを個別に移動する必要があります。また、ファイル名を読み取って移動できるように、ファイルのリストをどこかに維持する必要もあります。圧縮と解凍がより簡単な解決策だと思いました。
すべてのファイルをバンドル内のフォルダーに追加できます。アプリが初めて起動されると、高速列挙を使用してフォルダーを実行し、そのフォルダーで見つかったものはすべて、Documents フォルダーにコピーします。フォルダー内のフォルダーの処理は少し複雑です (おそらく再帰を追加します)。これにより、zip や tar について心配する必要も、インストールするファイルのディレクトリを保持する必要もありません。
必要なファイルのフォルダーを Xcode の resources フォルダーに配置し、グループとしてではなくフォルダーとしてインポートするように指示するだけです。そうすれば、ファイルは、個々のファイルとしてではなく、フォルダー内のリソースにインストールされます。
編集:
さらに良いことに、必要なすべてのファイルを 1 つのフォルダーに入れ、プロジェクトに追加しますが、「グループ」としてではなく、最初の起動時に次のように使用します。
[[NSFileManager defaultManager] copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error];
ディレクトリ全体をある場所から別の場所にコピーします。簡単!
libz.dylib
フレームワークをプロジェクトに追加し、圧縮/解凍方法を提供するDeusty のNSData
gzip カテゴリを含めます。
これは libz.dylib を使用することで利用できますが、(あるとしても) スペースをほとんど節約しないため、実際には必要ありません。アプリケーション バンドルは、電話に転送されるときに既に圧縮されています。通常、圧縮の上に圧縮を加えると、追加の圧縮はほとんど生じません。
自分で試してみてください。解凍されたコンテンツを含むアプリを出荷すると、圧縮されたコンテンツと同じくらいのスペースが必要になる場合があります。