1

私のコードは次のようになります。エラーをログに記録しようとすると、最後の行でアプリがクラッシュすることがあります。私は何を間違っていますか?

BOOL isDir;
NSError *error;
NSString *downloadPath = [[NSString stringWithFormat:@"%@/%@", [download downloadFolder], [download escapedTitle]] stringByExpandingTildeInPath];
NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath:downloadPath isDirectory:&isDir])
{
    [fileManager createDirectoryAtPath:downloadPath withIntermediateDirectories:YES attributes:nil error:&error];

    if (error)
        NSLog(@"%@", [error localizedDescription]);
}

コンソールからの出力も添付しました。 ここに画像の説明を入力

4

1 に答える 1

4

Cocoa では、NSError **呼び出されたメソッドがエラーを返す場合にのみ有効です。この場合-createDirectoryAtPath:...は false を返します。

をテストする代わりにif (error)、メソッドの戻り値-createDirectoryAtPath:が false であることをテストします。

例えば:

if (![fileManager createDirectoryAtPath:downloadPath withIntermediateDirectories:YES attributes:nil error:&error]) {
    NSLog(@"%@", [error localizedDescription]);
}
于 2013-05-14T13:16:54.907 に答える