首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift 4 macOS应用程序-如何找到重要的用户目录?

Swift 4 macOS应用程序-如何找到重要的用户目录?
EN

Stack Overflow用户
提问于 2017-10-29 07:28:04
回答 2查看 5.1K关注 0票数 7

对于macOS应用程序来说,使用Swift 4查找重要用户目录(如:桌面、文档、下载等)最简单的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-29 07:41:04

您可以使用FileManager urls方法。

代码语言:javascript
运行
复制
func urls(for directory: FileManager.SearchPathDirectory, in domainMask: FileManager.SearchPathDomainMask) -> [URL]

并为用户域掩码传递FileManager.SearchPathDirectory .desktopDirectory.documentDirectory.downloadsDirectory,并获得返回的第一个url:

代码语言:javascript
运行
复制
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!
票数 4
EN

Stack Overflow用户

发布于 2017-10-29 14:54:28

TLDR:

代码语言:javascript
运行
复制
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类:

这个:

代码语言:javascript
运行
复制
func urls(for directory: FileManager.SearchPathDirectory, 
   in domainMask: FileManager.SearchPathDomainMask) -> [URL]

返回请求域中指定公共目录的URL数组。…目录按照域掩码常量的顺序排列,其中用户域中的项优先,系统域中的项最后。

文档:https://developer.apple.com/documentation/foundation/filemanager/1407726-urls

(在@leo-dabus的答复中已经提到)

而这个:

(我更喜欢它,因为它更通用,并且返回一个URL)

代码语言:javascript
运行
复制
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:垃圾目录的位置。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46997820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档