swift - NSWorkspace.OpenConfiguration() 不工作?- 斯威夫特
问题描述
我不知道为什么,但为什么下面的代码没有预期的行为?
let workspace = NSWorkspace.shared
if let bundleURL = workspace.urlForApplication(withBundleIdentifier: "com.apple.Safari"){
workspace.open(bundleURL)
let conf = NSWorkspace.OpenConfiguration()
conf.activates = false
conf.hides = true
workspace.openApplication(at: bundleURL, configuration: conf){ (app, err) in
print(app as Any)
print(err as Any)
}
}
当我运行代码时,Safari 应用程序正常打开,“隐藏”和“激活”false 都不起作用。
Obs:应用沙盒:否 | 部署目标:11.3 | Xcode:12.5.1
解决方案
您在这里打开应用程序两次:
workspace.open(bundleURL) // first time
let conf = NSWorkspace.OpenConfiguration()
conf.activates = false
conf.hides = true
// second time
workspace.openApplication(at: bundleURL, configuration: conf){ (app, err) in
print(app as Any)
print(err as Any)
}
您第一次没有使用该配置,因此它在前台打开它而不隐藏。而且既然已经启动了,第二次打开也没有用。
只需删除workspace.open(bundleURL)
. 它对我有用。
推荐阅读
- calculation - DialogFlow CX 计算值
- powershell - PowerShell 导出
- r - 如何根据变量的首字母对新变量进行分组?
- android - Android:对多个商店使用相同的 applicationId 是一种好习惯吗?
- swiftui - 删除具有绑定布尔值的列表项 - SwiftUI
- arrays - 在递归函数中键入不匹配数组(VBA)
- odata - 针对真实服务器的“无法获取上下文”错误,适用于模拟服务器
- javascript - 反应秒表计时器计数 - 不重置秒
- openseadragon - openseadragon:无法 [Object object]:加载图像时出错
- amazon-web-services - 我应该将 AWS EFS 挂载在公有子网上还是私有子网上?