所以...我想使用此功能在给定的 URL 上启动应用程序。问题是,开发人员文档说:
参数
网址
应用程序网址。
选项
启动应用程序时要使用的选项。看 NSWorkspace.LaunchOptions 的可能值。
配置
包含配置选项的字典。这 字典可用于将其他选项传递给应用。可能 键值对在工作区启动配置中描述 选项。配置字典可能为空,在这种情况下 默认行为适用。
错误
按引用返回错误(如果应用程序无法) 待推出。如果不这样做,则可以为此参数指定 nil 需要错误信息。
返回值
如果应用已在运行,而newInstance未运行 在选项字典中指定,然后引用现有的 应用程序被返回;否则,将返回新的应用程序引用。如果 无法启动应用程序,返回nil并出现错误 被错误地指定。
问题是,这与函数签名根本不匹配,即:
func launchApplication(at url: URL, options: NSWorkspace.LaunchOptions = [], configuration: [NSWorkspace.LaunchConfigurationKey : Any]) throws -> NSRunningApplication
我到底应该在哪里指定所述错误?
除了错误处理之外,文档中提到的参数与实际方法完全匹配。两者都有url
、options
和configuration
。不过,由于 Swift 具有参数标签的能力,您可以在实际调用方法时将at
与url
参数一起使用。
大多数最后一个参数为NSError **error
的 Objective-C API 在 Swift 中被转换为没有错误参数的 API。相反,他们宣布他们throw
.
如果您阅读所引用方法的其余文档,您将看到:
在 Swift 中处理错误:
在 Swift 中,此方法返回一个非可选结果,并用
throws
关键字标记,以指示它在失败的情况下抛出错误。您可以在
try
表达式中调用此方法,并处理do
语句的catch
子句中的任何错误,如 Swift 编程语言中的错误处理和关于导入的 cocoa 错误参数中所述。
您可以按如下方式处理此错误:
do {
// pass real options and configuration as needed
try someWorkspace.launcApplication(at: someURL, options: [], configuration: [:])
} catch {
// handle error here as needed
print(error)
}