对于macOS应用程序来说,使用Swift 4查找重要用户目录(如:桌面、文档、下载等)最简单的方法是什么?
发布于 2017-10-29 07:41:04
您可以使用FileManager urls方法。
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!
发布于 2017-10-29 14:54:28
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
:局域网中的公共可用位置--安装网络上可用项目的位置(/Network)。.systemDomainMask
:由苹果提供-不能修改(/System)。.allDomainsMask
:所有域。
directory
参数有很多种可能性,在https://developer.apple.com/documentation/foundation/filemanager.searchpathdirectory中定义:
.applicationDirectory
:支持的应用程序(/Applications)。.demoApplicationDirectory
:不支持的应用程序和演示版本。.developerApplicationDirectory
:Developer应用程序(/Developer/ applications )。.adminApplicationDirectory
系统和网络管理应用。.libraryDirectory
:各种用户可见的文档、支持和配置文件(/Library)..developerDirectory
:开发人员资源(/Developer)。.userDirectory
:用户主目录(/Users)。.documentationDirectory
:文档。.documentDirectory
:文档目录。.coreServiceDirectory
:核心服务的位置(系统/图书馆/核心服务)。.autosavedInformationDirectory
:用户自动保存文档的位置(库/自动保存信息)。.desktopDirectory
:用户桌面目录的位置。.cachesDirectory
:可丢弃缓存文件的位置(库/缓存)。.applicationSupportDirectory
:应用程序支持文件的位置(库/应用程序支持)。.downloadsDirectory
:用户下载目录的位置。.inputMethodsDirectory
:输入方法的位置(库/输入方法)。.moviesDirectory
:用户的电影目录(~/氧化片)的位置。.musicDirectory
:用户音乐目录(~/ Music )的位置。.picturesDirectory
:用户图片目录(~/ Pictures )的位置。.printerDescriptionDirectory
:系统PPD目录的位置(库/打印机/ PPDs )。.sharedPublicDirectory
:用户公共共享目录(~/ Public )的位置。.preferencePanesDirectory
:用于系统首选项(Library/ PreferencePanes )的PreferencePanes目录的位置。.applicationScriptsDirectory
:调用应用程序的用户脚本文件夹的位置(~/Library/应用程序脚本/),.itemReplacementDirectory
:传递给FileManager方法url(for:in:appropriateFor:create:)
,以便创建临时目录。.allApplicationsDirectory
:所有可能出现应用程序的目录。.allLibrariesDirectory
:所有可能出现资源的目录。.trashDirectory
:垃圾目录的位置。
https://stackoverflow.com/questions/46997820
复制相似问题