2013-08-29 5 views
0

Я удаление файла на пути таким образом:removeItemAtPath завершение

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]; 

я звоню метод [само ReloadBusinessCards]; который перезагружает файлы. Проблема в том, что бывает, что удаление файла занимает много времени (0,5 секунды), и метод вызывается раньше. Я хотел бы предотвратить это, но я не думаю, что было бы неплохо установить NSTimer в 1 секунду. например, потому что, если приложение работает медленнее, файл может быть удален позже. Есть ли способ, который уведомляет вас о том, когда файл удален?

ответ

0

Оберните метод удаления в операторе if(). -removeItemAtPath: возвращает BOOL, чтобы вы могли проверить, является ли оно ДА или НЕТ.

if ([fileManager removeItemAtPath:myFilePath error:NULL]) { 
    [self ReloadBusinessCards]; 
} 
+0

Это работает, но метод должен вызываться после удаления файла. – user2014474

0

Вы можете подождать, пока операция не будет завершена, используя

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

или использовать НОД с обработчиком завершения, чтобы убедиться в том, что процесс стирания фактически сделано

+0

никогда не видел эту строку кода. что такое приемник? – user2014474

+0

Приемник может быть вашим контроллером просмотра, а затем выбрать любую функцию в вашем контроллере вида, которая выведет строку [fileManager removeItemAtPath: myFilePath error: NULL]; – artud2000

Смежные вопросы