0

この方法でパスにあるファイルを削除しています:

UIPanGestureRecognizer *gesture = (UIPanGestureRecognizer *)sender;
UIButton *button = (UIButton *)gesture.view;
[[(UIPanGestureRecognizer*)sender view] removeFromSuperview];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *myFilePath = [documentsDirectoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", button.titleLabel.text]];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:myFilePath error:NULL];
[self ReloadBusinessCards];

次に、メソッド [self ReloadBusinessCards] を呼び出しています。ファイルをリロードします。問題は、ファイルの削除に時間がかかり (0.5 秒)、メソッドが前に呼び出されることです。これを防ぎたいのですが、NSTimerを1秒に設定するのは良い考えではないと思います。たとえば、アプリの実行速度が遅いと、ファイルが削除される可能性があるためです。ファイルが削除されたときに通知する方法はありますか?

4

2 に答える 2

0

を使用して操作が完了するまで待つことができます

[receiver performSelectorOnMainThread:@selector(sel) withObject:nil waitUntilDone:NO]

または、GCD と完了ハンドラを使用して、消去のプロセスが実際に完了したことを確認します。

于 2013-08-29T20:55:01.853 に答える
0

if()delete メソッドをステートメントでラップします。-removeItemAtPath:BOOL を返すので、YES か NO かを確認できます。

if ([fileManager removeItemAtPath:myFilePath error:NULL]) {
    [self ReloadBusinessCards];
}
于 2013-08-29T20:51:11.040 に答える