首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift / Cocoa:如何监视文件夹中的更改?

Swift / Cocoa:如何监视文件夹中的更改?
EN

Stack Overflow用户
提问于 2018-05-20 21:43:46
回答 2查看 4K关注 0票数 19

我正在编写一个小型的macOS应用程序,在那里我希望能够看到一个文件夹的变化。它不需要查看子文件夹,我只想收到一个通知,如果一个文件被添加到文件夹或删除。

看起来可以使用NSFileCoordinator和/或NSFilePresenter来实现这一点,但我无法理解如何使用它们来实现这一目标。

理想情况下,无需包含第三方框架就可以解决这一问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-21 07:16:24

您可以使用NSFilePresenter来完成这个任务。观察类必须符合NSFilePresenter,如下所示。

presentedItemURL将指向要观察的文件夹。如果文件夹中有更改,请调用presentedSubitemDidChangeAtURL。下面的代码片段可以让您知道它是如何工作的。

代码语言:javascript
复制
class ObservingClass: NSObject, NSFilePresenter {

    lazy var presentedItemOperationQueue = NSOperationQueue.mainQueue()
    var presentedItemURL:NSURL?
    

    func presentedSubitemDidChangeAtURL(url: NSURL) {
        let pathExtension = url.pathExtension    
        if pathExtension == "png"{
            refreshImages()
        }
    }

   func refreshImages(){
        let path = snapshotPath
        var isDirectory: ObjCBool = ObjCBool(false)
        
        if NSFileManager.defaultManager().fileExistsAtPath(path!, isDirectory: &isDirectory){
            if isDirectory{
                do {
                    let list = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(path!) as Array<String>
                    for filePath in list {
                        if filePath.hasSuffix(".png"){
                            if let snapshot = snapshotAtPath(path! + "/" + filePath){
                                newSnapshotArray += [snapshot]
                            }
                        }
                    }
                } catch {
                    // error handling 
                }
            }
        }
    }
}

谨致问候。

票数 19
EN

Stack Overflow用户

发布于 2020-05-04 21:07:10

马克·T的答案仍然有效,似乎是解决这一问题的最简单方法。

为了使其工作,我需要添加以下行(可以在ObservingClass的init()处):

代码语言:javascript
复制
NSFileCoordinator.addFilePresenter(self)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50439658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档