6
votes

(Nsmenuitem): Setter manquant ou variable d'instance

Je rencontre une erreur étrange:

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)
}   
}


2 commentaires

Stackoverflow fonctionne en montrant votre code à d'autres. Afficher un message d'erreur sans code n'est susceptible de ne rien produire. Veuillez poster la définition de la définition de la prise prévue de votre Appdelegate. BTW: Il est rarement nécessaire de garder une trace d'une menuzée dans un point de vente, que voudriez-vous faire avec cela éventuellement?


J'ai ajouté le code. Que voulez-vous dire par Menuiem dans un point de vente? Je veux juste appeler une fonction lorsque je clique sur la menuem qui est tout. Merci


3 Réponses :


12
votes

Vous avez une sortie cassée dans votre fichier XIB. Habituellement, cela se produit lorsque vous configurez une sortie d'ivar ou d'une propriété qui est supprimée ultérieurement ou renommée n'utilisant pas la fonction de renommée de Xcode.


1 commentaires

Merci. La prise de référencement était fausse. Un clic droit sur l'article m'a montré que je faisais référence à des sorties qui n'existaient pas.



2
votes

Assurez-vous également que votre classe de contrôle personnalisée ou de votre contrôleur d'affichage est ajoutée à votre cible. (Project => Nom de la cible => Build Phases => Compiler des sources). Il est possible qu'un fichier soit dans votre projet mais pas votre cible.


0 commentaires

1
votes

Cela se produit parce que vous êtes à un point créé un @iboutlet pour un élément de scénario. Vous avez ensuite supprimé le code (référence) de votre fichier SWIFT.

J'ai créé un exemple où je crée deux autres @iboutlets (je l'ai nommé "Correctionfield" et "incorrectfield'-" - les deux sont incorrects) et les ont connectés à mon fichier Swift. J'ai ensuite supprimé le code de mon fichier Swift. Cela génère le journal comme indiqué dans la figure suivante: Entrez la description de l'image ici

Pour supprimer ce type de message de journal , vous pouvez procéder comme suit:

  1. Accédez à "Storyboard" et sélectionnez les éléments de scénario que vous avez créé des connexions ( @iboutlets ) à partir de.
  2. Ouvrez l'inspecteur "Connection" comme indiqué dans la figure ci-dessous
  3. retirez les points de report qui sont incorrects (dans mon cas, il s'agit du "Correctfelfield" et du "incorrectfield")
  4. fait

    Ceci a été fait en Xcode 11

     Entrez la description de l'image ici


0 commentaires