2014-12-21 38 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...inapp聲明不同的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()