2

我希望有人可以提出一种方法,让我可以使用 UITableView 自动“观察”文件系统中的变化。

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

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

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

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

必须有更好的方法,但是尽管搜索了很多,但我还是找不到。

谢谢!

4

2 回答 2

1

通常这可以通过NSWorkspace...来实现,这在 iPhone 上不受支持。但是由于除了您之外没有人应该在您的文档目录中写入内容,您可以轻松地实现一个解决方案,其中包括这个“添加的额外步骤”。我认为这并不过分。

于 2010-09-04T09:16:45.580 回答
0

您可以将 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
于 2010-09-04T11:03:35.937 回答