最小的Cocoa/Swift菜单栏应用程序不想运行

djc*_*djc 2 xcode cocoa swift

我正在尝试在Swift中构建一个骨架应用程序,我基本上只有一个菜单栏图标,没有窗口.从Xcode中的一个新的Storyboard项目开始,它最初工作,但试图摆脱窗口,它似乎不想再运行.我有以下内容:

import Cocoa
import AppKit

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    var window = NSWindow()
    var statusBar = NSStatusBar.systemStatusBar()
    var statusBarItem : NSStatusItem = NSStatusItem()

    override func awakeFromNib() {
        statusBarItem = statusBar.statusItemWithLength(-1)
        statusBarItem.title = "Test"
    }

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        sleep(10);
    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }

}
Run Code Online (Sandbox Code Playgroud)

在AppDelegate.swift中(基于本教程).通过Xcode运行时,我收到一些警告:

2015-06-23 22:20:28.444 PENCloud[19491:3303755] Failed to connect (colorGridView) outlet from (NSApplication) to (NSColorPickerGridView): missing setter or instance variable
2015-06-23 22:20:28.444 PENCloud[19491:3303755] Failed to connect (view) outlet from (NSApplication) to (NSColorPickerGridView): missing setter or instance variable
Run Code Online (Sandbox Code Playgroud)

从一些谷歌搜索,似乎我应该能够忽略这些,但我statusBarItem不再出现.我错过了什么?

hir*_*shi 6

你需要拥有main.swift如下代码.

import Cocoa

class AppDelegate: NSObject, NSApplicationDelegate {

    var statusBarItem : NSStatusItem!

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        statusBarItem = statusBar.statusItemWithLength(-1)
        statusBarItem.title = "Test"
    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }

}

autoreleasepool { () -> () in
    let app = NSApplication.sharedApplication()
    let delegate = AppDelegate()
    app.delegate = delegate
    app.run()
}
Run Code Online (Sandbox Code Playgroud)

文件名必须是main.swift.否则你将Expressions are not allowed at the top level在autoreleasepool的行上得到错误.

我在这里找到答案:https: //stackoverflow.com/a/26322464/338986