NSWorkspace().runningApplications给了我一个所有运行的应用程序的完整列表,但是我想过滤掉那些由用户专门启动的应用程序,我该怎么做呢?
NSWorkspace().runningApplications
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更简洁,并展示了如何使用map和filter
map
filter
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]"
2条答案
按热度按时间z4iuyo4d1#
我认为沿着几点应该会对你有所帮助:
只需检查常规应用程序
注意:虽然对于没有充分接触函数式编程的人来说,我的答案可能更清楚,但Leonardo's answer更简洁,并展示了如何使用
map
和filter
n3h0vuf22#
继续Diego的回答,你可以结合使用filter和map来完成你想要的,你可以使用activationPolicy来过滤你的数组,在此之上你可以Map结果来提取你经常运行的应用程序的名称。