[英]Swift 4 macOS App - How to find the important users directories?
使用Swift 4为macOS应用程序找到重要用户目录的最简单方法是:桌面,文档,下载等?
TLDR:
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提供 - 无法修改(/ System)。
.allDomainsMask
:所有域名。
directory
参数有很多可能性,在https://developer.apple.com/documentation/foundation/filemanager.searchpathdirectory中定义:
.applicationDirectory
:支持的应用程序(/ Applications)。
.demoApplicationDirectory
:不支持的应用程序和演示版本。
.developerApplicationDirectory
:开发人员应用程序(/ Developer / Applications)。
.adminApplicationDirectory
系统和网络管理应用程序。
.libraryDirectory
:各种用户可见的文档,支持和配置文件(/ Library)。
.developerDirectory
:开发人员资源(/ Developer)。
.userDirectory
:用户主目录(/ Users)。
.documentationDirectory
:文档。
.documentDirectory
:文档目录。
.coreServiceDirectory
:核心服务的位置(系统/库/核心服务)。
.autosavedInformationDirectory
:用户自动保存文档的位置(库/自动保存信息)。
.desktopDirectory
:用户桌面目录的位置。
.cachesDirectory
:可丢弃缓存文件的位置(库/缓存)。
.applicationSupportDirectory
:应用程序支持文件的位置(库/应用程序支持)。
.downloadsDirectory
:用户下载目录的位置。
.inputMethodsDirectory
:输入法的位置(库/输入法)。
.moviesDirectory
:用户电影目录的位置(〜/电影)。
.musicDirectory
:用户音乐目录的位置(〜/音乐)。
.picturesDirectory
:用户图片目录的位置(〜/图片)。
.printerDescriptionDirectory
:系统PPD目录的位置(库/打印机/ PPD)。
.sharedPublicDirectory
:用户的公共共享目录(〜/ Public)的位置。
.preferencePanesDirectory
:PreferencePanes目录的位置,用于系统首选项(Library / PreferencePanes)。
.applicationScriptsDirectory
:调用应用程序的用户脚本文件夹的位置(〜/ Library / Application Scripts /),
.itemReplacementDirectory
:传递给FileManager方法url(for:in:appropriateFor:create:)
.itemReplacementDirectory
:url(for:in:appropriateFor:create:)
以创建临时目录。
.allApplicationsDirectory
:可以发生应用程序的所有目录。
.allLibrariesDirectory
:可以发生资源的所有目录。
.trashDirectory
:垃圾目录的位置。
您可以使用FileManager URL方法
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!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.