2014-12-21 39 views
0

我试图激活正在运行的应用程序,但似乎无法获得app.activateWithOptions调用正确,因为以下四次尝试中的每一次都会导致编译时错误。Swift:使用NSRunningApplication

import AppKit 

var ws = NSWorkspace.sharedWorkspace() 
var apps = ws.runningApplications 
var app :NSRunningApplication 

for app in apps { 
    if (app.activationPolicy == NSApplicationActivationPolicy.Regular) { 
     app.activateWithOptions(options: ActivateIgnoringOtherApps) 
     app.activateWithOptions(options: NSApplicationActivateIgnoringOtherApps) 
     app.activateWithOptions(options: NSRunningApplication.ActivateIgnoringOtherApps) 
     app.activateWithOptions(options: NSRunningApplication.NSApplicationActivateIgnoringOtherApps) 

     println(app.localizedName) 
    } 
} 

回答

0

声明var app : NSRunningApplication是没有意义的,因为在for...in线app声明不同的app。您应该删除该行,因为这会误导您,并且完全没有意义和困惑。

因此,它是app,在for...in那一个你需要指定的类型。直到您解决这个问题,您才会进一步进行编译:

for app in apps as [NSRunningApplication] { 

现在您可以开始逐个修复错误了。我会给你第一个提示;它应该是:

app.activateWithOptions(.ActivateIgnoringOtherApps) 

其余三行留给读者练习!但即使如此,您仍然会遇到一些麻烦,因为您并不是,而是将这两个选项结合在一起 - 相反,您会在四个不同的时间激活相同的应用程序,这很愚蠢,完全不符合您的要求。您应该先将选项组合起来,然后再运行一次

总的来说,它从你的代码看起来就像你根本不知道Swift一样。在尝试使用它之前,你应该停下来学习它。否则,你只会肆意妄为(正如你现在清楚的那样)。

+0

马特:你是很精明的,是的,这是我在Mac和我的第一个快捷程序编程第一次尝试谢谢你。 ,我现在有第一个Mac程序在运行! – ChrisG

0

感谢您的回答。我会补充一点,如果你正在寻找你的应用程序(而不是你可以在激活它之前添加一行),下面两行将把你的应用程序分配给常量“app”,然后激活它。要在后台运行的应用程序在屏幕上得到一个NSAlert

let app = NSRunningApplication.currentApplication() 
    app.activateWithOptions(.ActivateIgnoringOtherApps) 

    let user_choice = alert.runModal()