(NSMenuItem): missing setter or instance variable
Solution 1
You have a broken outlet in your xib file. Usually it happens when you set up an outlet to ivar or property which is later deleted or renamed not using Xcode's rename feature.
Solution 2
Also make sure that your custom view or view controller class is added to your target. (Project => Target Name => Build Phases => Compile Sources). It's possible that a file is in your project but not your target.
Solution 3
This happens because you at one point created an @IBOutlet
for a storyboard element. You then later removed the code (reference) from your swift file.
I created an example where I create two extra @IBOutlets
(I named them 'correctField' and 'incorrectField'- both are incorrect though) and connected them from my storyboard to my swift file.
I then removed the code from my swift file. This generates the log as shown in the following figure :
To remove this kind of log message, you can do the following:
- Go to the 'storyboard' and select the storyboard elements you created connections (
@IBOutlets
) from. - Open the 'connection inspector' as showed in the figure below
- Remove the Referencing Outlets which are incorrect (in my case it is the 'correctField' and 'incorrectField')
- Done
This was done in xCode 11
Comments
-
Silve2611 almost 2 years
I am encountering a strange error:
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
I occured when a added a menuItem to a menu and connected a function to it.
I do not know what the Problem is. The app works fine but i don't think it is a smart idea to ignore the error. What is meant by setter or instance variable? Why is it needed?
UPDATE: Here is the relevant code:
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) } }