【问题标题】:Filtering user-launched applications (Mac OS X)过滤用户启动的应用程序 (Mac OS X)
【发布时间】:2015-03-27 19:16:56
【问题描述】:

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

【问题讨论】:

    标签: xcode macos swift filtering


    【解决方案1】:

    我认为这些方面的内容应该对您有所帮助:

     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

    【讨论】:

      【解决方案2】:

      跟进 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]"
      

      【讨论】:

        猜你喜欢
        • 2011-04-11
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多