在 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 中观察模型变化的最佳实践

如何在 RxSwift 中观察 UITableView 点击/选择的先前值和当前值?

怎样才能使excel里面字体颜色随系统时间的变而变化

PyTorch实现简单的变分自动编码器VAE

优化大师导致电脑自动关机如何让解决

python 一个简单的变分自动编码器实现