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

vsnjm48y  于 2023-01-06  发布在  Mac
关注(0)|答案(2)|浏览(170)

NSWorkspace().runningApplications给了我一个所有运行的应用程序的完整列表,但是我想过滤掉那些由用户专门启动的应用程序,我该怎么做呢?

z4iuyo4d

z4iuyo4d1#

我认为沿着几点应该会对你有所帮助:

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更简洁,并展示了如何使用mapfilter

n3h0vuf2

n3h0vuf22#

继续Diego的回答,你可以结合使用filter和map来完成你想要的,你可以使用activationPolicy来过滤你的数组,在此之上你可以Map结果来提取你经常运行的应用程序的名称。

let regularApps = NSWorkspace.shared.runningApplications.filter { $0.activationPolicy == .regular }.compactMap(\.localizedName)

print(regularApps) // "[Finder, Mail, Messages, Preview, Skype, iOS Simulator, iTunes, Photos, Safari, TextEdit, iBooks, System Preferences, QuickTime Player, App Store, Disk Speed Test, Xcode]"

相关问题