【问题标题】:Automatically observing filesystem changes in UITableView在 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 中使用这个数组来显示项目。现在,如果我添加对删除项目的支持,则需要添加一个步骤:我必须同时删除物理文件并更新我的数组。

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

谢谢!

【问题讨论】:

    标签: iphone nsfilemanager


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-01
        • 1970-01-01
        • 2012-02-07
        • 2022-01-13
        相关资源
        最近更新 更多