2014-12-21 4 views
0

Я пытаюсь активировать запущенное приложение, но, похоже, не может получить правильный ответ app.activateWithOptions, поскольку каждая из четырех попыток ниже приводит к ошибкам компиляции.Swift: using 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 не имеет смысла, потому что app в for...in линии объявляет другую app. Вы должны просто удалить эту строку, поскольку она вводит вас в заблуждение и совершенно бессмысленна и запутанна.

Таким образом, чтоapp, один в for...in, что вам нужно указать тип. Вы не получите дальше в этой попытке скомпилировать, пока вы не исправить:

for app in apps as [NSRunningApplication] { 

Теперь вы можете начать, чтобы исправить свои ошибки, один за другим. Я просто дам вам намек на первый; это должно быть:

app.activateWithOptions(.ActivateIgnoringOtherApps) 

Остальные три строки оставлены в качестве упражнения для читателя! Даже тогда у вас все еще будет какая-то проблема, потому что вы не являетесь , комбинируя варианты - вместо этого вы активируете одно и то же приложение четыре раза, что глупо и совсем не то, что вы хотите. Сначала необходимо объединить параметры, а затем активировать приложение один раз.

В целом, это выглядит из вашего кода, как будто вы вообще не знаете Swift. Вы действительно должны остановиться и изучить его, прежде чем пытаться его использовать. В противном случае вы просто будете бить (как вы сейчас это понимаете).

+0

матовые:. Вы очень проницательны, да, это моя первая попытка программирования на Mac и моей первой быстрой программы Благодаря вам. , Теперь у меня есть моя первая программа для Mac! – ChrisG

0

Спасибо за ответ Matt. Я добавлю, что если вы ищете только свое приложение (вместо того, чтобы добавить строку, прежде чем активировать ее. Следующие две строки назначат ваше приложение постоянному «приложению», а затем активируют его. Это полезно, когда yo хотят получить NSAlert на экране из приложения, работающего в фоновом режиме

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

    let user_choice = alert.runModal() 
Смежные вопросы