在UITableView中自动观察文件系统更改

时间:2010-09-04 09:03:03

标签: iphone nsfilemanager

我希望有人可以建议一种方法,我可以使用UITableView自动“观察”文件系统中的更改。

我有一个UITableView,其中填充了我目录中的文件内容。

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

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

然后我在cellForRowAtIndexPath中使用此数组来显示项目。现在,如果我添加对删除项目的支持,则需要添加一个步骤:我必须删除物理文件并更新我的数组。

必须有一个更好的方法,但尽管经过多次搜索我找不到它。

谢谢!

2 个答案:

答案 0 :(得分:1)

通常这可以通过NSWorkspace来实现...这在iPhone上是不受支持的。但是除了你之外没有人应该写在你的文档目录中,你可以很容易地实现一个包含这个“额外的额外步骤”的解决方案。我不认为这太不优雅了。

答案 1 :(得分:0)

您可以将NSFileManager包装在您自己的类中,此类将通过KVO,NSNotification或ad-hoc委托通知您的代码。这样的课程可以通过不同的项目轻松重复使用;这里是这样一个类的标题片段:

@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