Как соблюдать значение FileAttributeKey, NSMetadataItem или URLResourceKey? - PullRequest
0 голосов
/ 03 марта 2019

У меня есть контроллер представления, который отображает некоторые атрибуты файлов, полученные из одного из моих пользовательских классов, все эти атрибуты извлекаются с использованием URLResourceKey и FileAttributeKey.

Вот код моего пользовательского класса дляАтрибуты файла:

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, но я попробовал их, я просто не могу найти способ сделать это, есть ли способ достичь этого?

...