如何观察FileAttributeKey,NSMetadataItem或URLResourceKey值?

时间:2019-03-03 10:08:59

标签: cocoa swift4 key-value-observing

我有一个视图控制器,其中显示了从我的一个自定义类中检索到的一些文件属性,所有这些属性都是使用URLResourceKeyFileAttributeKey检索的。

这是我的自定义类的文件属性代码:

struct FileType: CustomStringConvertible {
    var type: String
    var description: String {
        return type
    }
    init(filePath path: String) {
        let filePathURL = NSURL(fileURLWithPath: path)
        if let fileType = try? filePathURL.resourceValues(forKeys: [.localizedTypeDescriptionKey]) as? [URLResourceKey: String] {
            if let type = fileType[.localizedTypeDescriptionKey] {
                self.type = type
                return
            }
        }
        self.type = "Unknown"
    }
}
// other file attribute structures

class File: NSObject {
    @objc var fileName: FileName
    @objc var filePath: String
    // a bunch of lazy variables of file attribute, for example:
    lazy var FileType: FileType = {
        return FileType(filePath: filePath)
    }()
}

尝试::我希望这些属性在文件属性更改时自动更新。例如(仅举例来说),文件名(URLResourceKey.nameKey / NSMetadataItemFSNameKey)已更改,我希望显示此名称的该视图控制器上的标签能够检测到更改并自行更新为新值

我已经发表了很多关于KVO的文章,但是我尝试了他们的方法,但我只是找不到方法,有没有办法实现这一目标?

0 个答案:

没有答案