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