0

パスワードで保護されたzipファイルを電子メールで送信できるようにしたいので、IOS4アプリケーションで客観的なzip(v1.01e)を使用しようとしています。

アプリケーションに目的のzipソースコードファイルがありますが、このスタートガイドに従っていくつかの問題が発生しています。http://code.google.com/p/objective-zip/wiki/GettingStarted

次のコマンドを使用します

ZipFile *zipFile= [[ZipFile alloc] initWithFileName:@"yourFiles.zip" mode:ZipFileModeCreate];

ただし、これは、メソッドzipOpen2(507行目)から以下に示すコードを介してnullを返すことに常に失敗します。ここ:

if (ziinit.filestream == NULL)
        return NULL;

スタックトレースに続いて、次のメソッドを通過します。

//First
- (id) initWithFileName:(NSString *)fileName mode:(ZipFileMode)mode 

//Second
extern zipFile ZEXPORT zipOpen (pathname, append)

//Third
extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc_def)

ただし、2番目のメソッドにこのコードがあることに気付きました。

extern zipFile ZEXPORT zipOpen (pathname, append)
    const char *pathname;
    int append;
{
    return zipOpen2(pathname,append,NULL,NULL);
}

このメソッドから文字列パス名(GDB内)の値をクエリすると、次のようになります。

0x1b7f30は、有効なオブジェクトを指しているようには見えません。

だから私の質問:

  1. とは何ですかconst char *pathname、それは何をしますか、そしてそれはパス名を台無しにしていますか?AFAIK charは、ファイル名を表すことができない単一の文字ですか?
  2. 示されているコードは、目的のzipプロジェクトのソースコードからのものであり、私自身のものではないため、機能していると思います。それは私の誤解かもしれません。では、この問題を引き起こしている可能性のある他の理由は何ですか?

詳細については、パラメータ、ファイル名を取得し、次のようにファイル名へのポインタを作成しinitWithFileName:て渡します。zipOpen()

_fileName = [fileName retain];
4

2 に答える 2

0

ファイルのオープンをfopenまでさかのぼって追跡しました。これは、エラーが何を使用しているかを確認errnoできるため、朗報です。あなたが何を得ているかを私たちに話すまで、私errnoは問題が何であるかを推測することしかできません。しかし、私が推測すると、そのファイルに書き込むための適切な権限がないため、失敗していると言えます。

于 2012-06-21T14:06:16.257 に答える
0

最終的に私はこの問題を解決することができました。問題は、ファイル名の先頭にアプリケーションのドキュメントディレクトリの場所を追加していなかったためです。

私がこれをやったら、すべてが順調でした。

于 2012-10-26T09:54:35.320 に答える