Swift 4 macOS App - Как найти важные каталоги пользователей?

Что является самым простым способом с Swift 4 для приложения macOS для поиска важных каталогов пользователей, таких как: Рабочий стол, Документы, Загрузки и т.д.?

2 ответа

Вы можете использовать метод URL-адресов FileManager

func urls(for directory: FileManager.SearchPathDirectory, in domainMask: FileManager.SearchPathDomainMask) -> [URL]

и передайте FileManager.SearchPathDirectory .desktopDirectory, .documentDirectory или .downloadsDirectory для маски домена пользователя и получите первый URL-адрес:

let desktopDirectory = FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first!
let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let downloadsDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first!


TL;DR:

let desktopDir = try? FileManager.default.url(for: .desktopDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let documentDir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let downloadsDir = try? FileManager.default.url(for: .downloadsDirectory, in: .userDomainMask, appropriateFor: nil, create: false)

Существует два способа получить эту информацию, как из класса FileManager:

Вот этот:

func urls(for directory: FileManager.SearchPathDirectory, 
 in domainMask: FileManager.SearchPathDomainMask) -> [URL]

Возвращает массив URL-адресов для указанного общего каталога в запрошенных доменах. [...] Каталоги упорядочены в соответствии с порядком констант маски домена, сначала с элементами в домене пользователя, а элементы в системном домене - последними.

Документация: https://developer.apple.com/documentation/foundation/filemanager/1407726-urls

(уже упоминалось в ответе @leo-dabus)

И этот:

(который я предпочитаю, поскольку он более универсален и возвращает один URL-адрес)

func url(for directory: FileManager.SearchPathDirectory, 
 in domain: FileManager.SearchPathDomainMask, 
 appropriateFor url: URL?, 
 create shouldCreate: Bool) throws -> URL

Располагает и, возможно, создает указанный общий каталог в домене.

Документация: https://developer.apple.com/documentation/foundation/filemanager/1407693-url

Для одного:

Допустимые домены, определенные в https://developer.apple.com/documentation/foundation/filemanager.searchpathdomainmask:

.userDomainMask: домашний каталог пользователей - место для установки личных элементов пользователей (~).

.localDomainMask: Локальный для текущего компьютера - место для установки элементов, доступных всем на этом компьютере.

.networkDomainMask: общедоступное местоположение в локальной сети - место для установки элементов, доступных в сети (/сеть).

.systemDomainMask: Предоставляется Apple-can .systemDomainMask быть измененным (/System).

.allDomainsMask: Все домены.

Существует множество возможностей для параметра directory, определенного в https://developer.apple.com/documentation/foundation/filemanager.searchpathdirectory:

.applicationDirectory: Поддерживаемые приложения (/Приложения).

.demoApplicationDirectory: Неподдерживаемые приложения и демонстрационные версии.

.developerApplicationDirectory: приложения для разработчиков (/Developer/Applications).

.adminApplicationDirectory Системные и сетевые приложения.

.libraryDirectory: Различные документы, файлы поддержки и конфигурации, доступные для пользователя (/Library).

.developerDirectory: Ресурсы разработчика (/Разработчик).

.userDirectory: пользовательские домашние каталоги (/Users).

.documentationDirectory: Документация.

.documentDirectory: Каталог документов.

.coreServiceDirectory: Местоположение основных служб (System/Library/CoreServices).

.autosavedInformationDirectory: расположение пользователей автосохраненных документов (библиотека/информация автосохранения).

.desktopDirectory: расположение каталога рабочего стола пользователей.

.cachesDirectory: расположение отбрасываемых файлов кеша (Library/Caches).

.applicationSupportDirectory: расположение файлов поддержки приложений (поддержка библиотеки/приложений).

.downloadsDirectory: расположение каталога загрузки пользователей.

.inputMethodsDirectory: расположение методов ввода (методы библиотеки/ввода).

.moviesDirectory: Местоположение пользователя Каталог фильмов (~/Фильмы).

.musicDirectory: Расположение пользователя Каталог музыки (~/Музыка).

.picturesDirectory: Расположение каталога "Картинки пользователя" (~/Картинки).

.printerDescriptionDirectory: расположение каталога системных PPD (библиотека/принтеры/PPD).

.sharedPublicDirectory: Расположение общего каталога общего .sharedPublicDirectory пользователя (~/Public).

.preferencePanesDirectory: расположение каталога PreferencePanes для использования с системными настройками (Library/PreferencePanes).

.applicationScriptsDirectory: расположение папки пользовательских скриптов для вызывающего приложения (~/Library/Application Scripts/),

.itemReplacementDirectory: передано в метод FileManager url(for:in:appropriateFor:create:) для создания временного каталога.

.allApplicationsDirectory: все каталоги, где могут возникать приложения.

.allLibrariesDirectory: все каталоги, в которых могут возникать ресурсы.

.trashDirectory: расположение каталога мусора.

licensed under cc by-sa 3.0 with attribution.