5

iPhone アプリケーションに同梱する必要のあるリソース (zip 形式) がいくつかあります。アプリを初めて起動するときは、この zip ファイルを Documents フォルダーに移動またはコピーして、そこで解凍する必要があります。その後、ユーザーはアプリケーションからこのパスにさらにファイルを追加できます。誰かがこれを達成する方法を提案できますか?

ありがとう!

4

3 に答える 3

6

上記のコメントに基づいて:

複数のファイルがあるので、圧縮されたリソースを追加したい理由。圧縮しない場合は、ファイルを個別に移動する必要があります。また、ファイル名を読み取って移動できるように、ファイルのリストをどこかに維持する必要もあります。圧縮と解凍がより簡単な解決策だと思いました。

すべてのファイルをバンドル内のフォルダーに追加できます。アプリが初めて起動されると、高速列挙を使用してフォルダーを実行し、そのフォルダーで見つかったものはすべて、Documents フォルダーにコピーします。フォルダー内のフォルダーの処理は少し複雑です (おそらく再帰を追加します)。これにより、zip や tar について心配する必要も、インストールするファイルのディレクトリを保持する必要もありません。

必要なファイルのフォルダーを Xcode の resources フォルダーに配置し、グループとしてではなくフォルダーとしてインポートするように指示するだけです。そうすれば、ファイルは、個々のファイルとしてではなく、フォルダー内のリソースにインストールされます。

編集:

さらに良いことに、必要なすべてのファイルを 1 つのフォルダーに入れ、プロジェクトに追加しますが、「グループ」としてではなく、最初の起動時に次のように使用します。

[[NSFileManager defaultManager] copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error];

ディレクトリ全体をある場所から別の場所にコピーします。簡単!

于 2009-09-23T08:31:19.310 に答える
4

libz.dylibフレームワークをプロジェクトに追加し、圧縮/解凍方法を提供するDeusty のNSDatagzip カテゴリを含めます。

于 2009-09-23T04:38:23.867 に答える
3

これは libz.dylib を使用することで利用できますが、(あるとしても) スペースをほとんど節約しないため、実際には必要ありません。アプリケーション バンドルは、電話に転送されるときに既に圧縮されています。通常、圧縮の上に圧縮を加えると、追加の圧縮はほとんど生じません。

自分で試してみてください。解凍されたコンテンツを含むアプリを出荷すると、圧縮されたコンテンツと同じくらいのスペースが必要になる場合があります。

于 2009-09-23T04:43:09.263 に答える