过滤用户启动的应用程序(Mac OS X)

时间:2015-03-27 19:16:56

标签: xcode macos swift filtering

NSWorkspace().runningApplications为我提供了所有正在运行的应用程序的完整列表,但我想过滤掉用户专门启动的应用程序。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

我认为这些方面的内容可以帮助你:

 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

答案 1 :(得分:3)

跟进迭戈的回答,您可以结合使用过滤器和地图来完成您想要的任务。您可以使用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]"