【发布时间】:2015-03-27 19:16:56
【问题描述】:
NSWorkspace().runningApplications 为我提供了所有正在运行的应用程序的完整列表,但我想过滤掉用户专门启动的应用程序。我怎样才能做到这一点?
【问题讨论】:
标签: xcode macos swift filtering
NSWorkspace().runningApplications 为我提供了所有正在运行的应用程序的完整列表,但我想过滤掉用户专门启动的应用程序。我怎样才能做到这一点?
【问题讨论】:
标签: xcode macos swift filtering
我认为这些方面的内容应该对您有所帮助:
let apps = NSWorkspace().runningApplications
for app in apps {
print("URL: \(app.executableURL!) App name: \(app.localizedName!)")
switch app.activationPolicy! {
case NSApplicationActivationPolicy.Regular:
println(" Normal app ?")
case NSApplicationActivationPolicy.Accessory:
println(" Accessory app")
case NSApplicationActivationPolicy.Prohibited:
println(" backgound app")
default:
println("unknown")
}
}
只需检查常规应用程序
注意:虽然我的回答对于没有足够了解函数式编程的人来说可能更清楚,Leonardo's answer 更简洁,并展示了如何使用map & filter
【讨论】:
跟进 Diego 的回答,您可以结合使用 filter 和 map 来完成您想要的。您可以使用activationPolicy 过滤您的数组,除此之外,您还可以映射结果以提取您常规运行的应用程序的名称。
let regularApps = NSWorkspace().runningApplications.filter{$0.activationPolicy == NSApplicationActivationPolicy.Regular}.map{$0.localizedName!!}
println(regularApps.description) // "[Finder, Mail, Messages, Preview, Skype, iOS Simulator, iTunes, Photos, Safari, TextEdit, iBooks, System Preferences, QuickTime Player, App Store, Disk Speed Test, Xcode]"
【讨论】: