我遇到一个奇怪的错误:
2015-04-02 12:20:14.642 test[21167:257788] Failed to connect
(testApp) outlet from (test.AppDelegate) to (NSMenuItem): missing
setter or instance variable
inserted id: 122
我在菜单中添加了一个menuItem并将一个函数连接到它时发生了。
我不知道问题是什么。该应用程序工作正常,但我不认为忽略错误是一个明智的想法。 setter或实例变量是什么意思?为什么需要?
更新:以下是相关代码:
import Cocoa
import Foundation
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var statusMenu: NSMenu!
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)
func applicationDidFinishLaunching(aNotification: NSNotification) {
let icon = NSImage(named: "statusIcon")
statusItem.image = icon
statusItem.menu = statusMenu
// Time for constant repeat
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "timerRepeat", userInfo: nil, repeats: true)
}
// Method to call the tracking core
func timerRepeat() {
//....
}
@IBAction func frontEnd(sender: NSMenuItem) {
var targetURL : String = NSBundle.mainBundle().resourcePath!
targetURL = targetURL + "/" + "front.app"
let workspace = NSWorkspace()
workspace.launchApplication(targetURL)
}
@IBAction func menuClicked(sender: NSMenuItem) {
NSApplication.sharedApplication().terminate(self)
}
}
答案 0 :(得分:7)
您的xib文件中有一个损坏的插座。通常情况下,当您设置ivar或属性的出口时,后来删除或重命名不使用Xcode的重命名功能。
答案 1 :(得分:2)
还要确保将自定义视图或视图控制器类添加到目标。 (项目=> 目标名称 =>构建阶段=>编译源代码)。文件可能在您的项目中,但不在您的目标中。
答案 2 :(得分:0)
发生这种情况是因为您曾经为情节提要元素创建了@IBOutlet
。然后,您稍后从快速文件中删除了代码(参考)。
我创建了一个示例,其中创建了两个额外的@IBOutlets
(我将它们命名为'correctField'和'incorrectField'-两者都是不正确的),并将它们从情节提要板连接到我的swift文件。
然后,我从swift文件中删除了代码。这将生成日志,如下图所示:
要删除这种日志消息,您可以执行以下操作:
@IBOutlets
)的故事板元素。这是在xCode 11中完成的