所以...我想使用此功能在给定的URL上启动应用程序。问题是,开发人员文档说:
参数
网址
应用程序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
表达式中调用此方法,并处理catch
语句的do
子句中的任何错误,如Error Handling和The Swift Programming Language中的About Imported Cocoa Error Parameters所述。
您处理错误如下:
do {
// pass real options and configuration as needed
try someWorkspace.launcApplication(at: someURL, options: [], configuration: [:])
} catch {
// handle error here as needed
print(error)
}