Ты наверное замечал, что при загрузке файлов, например в Chrome, в Finder рядом с файлом показывается некий круговой индикатор загрузки.
Для этого используется специальный атрибут файла com.apple.progress.fractionCompleted
, а также есть небольшая (но неочевидная) хитрость: нужно выставить дату создания файла равной 1984-01-24 08:00:00 +0000
а соотвественно, чтобы скрыть индикатор вернуть файлу актуальную дату и убрать атрибут.
Метод на Swift будет выглядеть следующим образом:
func setProgress(value: Double, forFile path: String) throws {
var fileAttributes = try FileManager.default.attributesOfItem(atPath: path)
let extendedAttributesKey = FileAttributeKey(rawValue: "NSFileExtendedAttributes")
var extendedAttributes = fileAttributes[extendedAttributesKey] as? Dictionary ?? [:]
let progressData = "\(value)".data(using: .ascii)
extendedAttributes["com.apple.progress.fractionCompleted"] = progressData
fileAttributes[extendedAttributesKey] = extendedAttributes
let dateString = "1984-01-24 08:00:00 +0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss Z"
let date = dateFormatter.date(from: dateString)
fileAttributes[FileAttributeKey.creationDate] = date
try FileManager.default.setAttributes(fileAttributes, ofItemAtPath: path)
}
Пример использования:
try! setProgress(value: 0.6, forFile: "/Users/michael/1.txt")