Swift: проблемы при получении значка файла на Mac - PullRequest
0 голосов
/ 27 июня 2019

Я использую следующий код для получения значка файлов или папок. Затем покажите их в меню. Моя проблема: некоторые файлы, значок не отображается (например, .txt файл). Значки папок и некоторых других файлов по-прежнему отображаются. Какова возможная причина этой проблемы?

// menuItem.Title: display name for file/folder
// menuItem.Content: full path of file/url


let menuItem = NSMenuItem(title: item.Title, action: #selector(AppDelegate.openLocal(_:)), keyEquivalent: "")

let requiredAttributes = [URLResourceKey.effectiveIconKey]


if let enumerator = FileManager.default.enumerator(at: URL(fileURLWithPath: item.Content), includingPropertiesForKeys: requiredAttributes, options: [.skipsHiddenFiles, .skipsPackageDescendants, .skipsSubdirectoryDescendants], errorHandler: nil) {

    while let url = enumerator.nextObject() as? URL {

        do {
            let properties = try  (url as NSURL).resourceValues(forKeys: requiredAttributes)

            let icon = properties[URLResourceKey.effectiveIconKey] as? NSImage  ?? NSImage()
            menuItem.image = icon

        }
        catch {

        }


    }
}

1 Ответ

0 голосов
/ 27 июня 2019

Я использую следующий код, чтобы получить значок для файла. Это работает довольно надежно:

static func getIconForUrl(_ path: String) -> NSImage?
{
    return NSWorkspace.shared.icon(forFile: path)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...