Swift/Cocoa:launchApplication(at:options:configuration:) 并捕获



所以...我想使用此功能在给定的 URL 上启动应用程序。问题是,开发人员文档说:

参数

网址

应用程序网址。

选项

启动应用程序时要使用的选项。看 NSWorkspace.LaunchOptions 的可能值。

配置

包含配置选项的字典。这 字典可用于将其他选项传递给应用。可能 键值对在工作区启动配置中描述 选项。配置字典可能为空,在这种情况下 默认行为适用。

错误

按引用返回错误(如果应用程序无法) 待推出。如果不这样做,则可以为此参数指定 nil 需要错误信息。

返回值

如果应用已在运行,而newInstance未运行 在选项字典中指定,然后引用现有的 应用程序被返回;否则,将返回新的应用程序引用。如果 无法启动应用程序,返回nil并出现错误 被错误地指定。

问题是,这与函数签名根本不匹配,即:

func launchApplication(at url: URL, options: NSWorkspace.LaunchOptions = [], configuration: [NSWorkspace.LaunchConfigurationKey : Any]) throws -> NSRunningApplication

我到底应该在哪里指定所述错误?

除了错误处理之外,文档中提到的参数与实际方法完全匹配。两者都有urloptionsconfiguration。不过,由于 Swift 具有参数标签的能力,您可以在实际调用方法时将aturl参数一起使用。

大多数最后一个参数为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)
}

最新更新