在 UITableView 中自动观察文件系统的变化
Posted
技术标签:
【中文标题】在 UITableView 中自动观察文件系统的变化【英文标题】:Automatically observing filesystem changes in UITableView 【发布时间】:2010-09-04 09:03:02 【问题描述】:我希望有人能提出一种方法,让我可以使用 UITableView 自动“观察”文件系统中的变化。
我有一个 UITableView 填充了我目录中文件的内容。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager directoryContentsAtPath:documentsDirectory];
然后我在 cellForRowAtIndexPath 中使用这个数组来显示项目。现在,如果我添加对删除项目的支持,则需要添加一个步骤:我必须同时删除物理文件并更新我的数组。
一定有更好的方法,但尽管搜索了很多,我还是找不到。
谢谢!
【问题讨论】:
【参考方案1】:通常这可以通过NSWorkspace
... 来实现,这在 iPhone 上是不支持的。但是由于除了您之外没有人应该在您的文档目录中写入内容,您可以轻松实现一个解决方案,其中包括这个“添加的额外步骤”。我不认为这太不雅了。
【讨论】:
【参考方案2】:您可以将 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
【讨论】:
以上是关于在 UITableView 中自动观察文件系统的变化的主要内容,如果未能解决你的问题,请参考以下文章
KVO 在 UITableView 中观察模型变化的最佳实践