Автоматическое наблюдение за изменениями файловой системы в UITableView - PullRequest
2 голосов
/ 04 сентября 2010

Я надеюсь, что кто-то может предложить способ, которым я мог бы автоматически "наблюдать" изменения в файловой системе с помощью UITableView.

У меня есть UITableView, заполненный содержимым файлов в моем каталоге.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager directoryContentsAtPath:documentsDirectory];

Затем я использую этот массив в cellForRowAtIndexPath для отображения элементов.Теперь, если я добавлю поддержку для удаления элементов, необходимо добавить еще один шаг: мне нужно как удалить физический файл, так и обновить мой массив.

Должен быть лучший способ, но я не могу его найти, несмотря намного поиска.

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Обычно этого можно достичь с помощью NSWorkspace ..., который не поддерживается на iPhone. Но так как никто, кроме вас, не должен писать в свой каталог документов, вы можете легко реализовать решение, которое включает этот «дополнительный дополнительный шаг». Я не думаю, что это слишком не элегантно.

0 голосов
/ 04 сентября 2010

Вы можете заключить NSFileManager в свой собственный класс, и этот класс уведомит ваш код через KVO, NSNotification или специальный делегат.Такой класс можно легко использовать в разных проектах;Вот фрагмент заголовка такого класса:

@interface FileManagerWrapper : NSObject 
{
@private
    NSFileManager *_fileManager;
    NSString *_documentsDirectory;
    id<FileManagerWrapperDelegate> _delegate;

}

@property (nonatomic, copy) NSString *documentsDirectory;
@property (nonatomic, assign) id<FileManagerWrapperDelegate> delegate;

- (void)removeFile:(NSString *)path;

@end
...