2015-07-07 18 views
5

ho a che fare con il quadro accessorio esterno e qui è il mio codice per la registrazione del notofication ..Gestore del metodo per la notifica ricevuta Arresto anomalo dell'applicazione. :(

override func viewDidLoad() { 
    super.viewDidLoad() 

    EAAccessoryManager.sharedAccessoryManager().registerForLocalNotifications() 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "accessoryDidConnectNotify", name: EAAccessoryDidConnectNotification, object: nil) 
    } 

E qui è la mia funzione di gestione metodo ...

func accessoryDidConnectNotify(notification: NSNotification){ 


     let alert : UIAlertController = UIAlertController(title: "Alert", message: "MFi Accessory Connected", preferredStyle:UIAlertControllerStyle.Alert) 

     alert.addAction(UIAlertAction(title: "ok", style: UIAlertActionStyle.Default, handler: { (action) -> Void in 

     })) 

     self.presentViewController(alert, animated: true, completion: nil) 

E il mio problema è se io non dare alcun parametro all'interno del accessoryDidConnectNotify funzionare l'applicazione funziona bene procedere con la vista avviso quando inserisco un accessorio MFI ..

(i.e) func accessoryDidConnectNotify(){ // works fine (with no arguments) 
         } 

ma ho bisogno l'oggetto NSNotification da utilizzare all'interno del mio funzione accessoryDidConnectNotify per ottenere il nome dell'accessorio ... ma se aggiungo il NSNotification oggetto la crash appliaction sull'inserimento di un accessorio MFi ...

(i.e) func accessoryDidConnectNotify(notification: NSNotification){ 
} // crashes app (with arguments) 

Se qualcuno è venuto anche attraverso il problema ... per favore fare la parte

+4

Basta cambiare 'accessoryDidConnectNotify' a 'accessoryDidConnectNotify:' –

+2

La funzione ha un argomento, quindi il nome del selettore deve essere 'accessoryDidConnectNotify:' come @DharmeshKheni ha scritto. Ecco [maggiori informazioni] (http://stackoverflow.com/a/24007718/581190). – robertvojta

risposta

4

Se il metodo non ha alcun parametro allora si può chiamare in questo modo:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "accessoryDidConnectNotify", name: EAAccessoryDidConnectNotification, object: nil) 

utilizzando "accessoryDidConnectNotify".

In modo che è possibile utilizzare tale metodo come:

func accessoryDidConnectNotify(){ // works fine (with no arguments) 

    //Your code 
} 

Ma se il metodo ha i parametri poi si deve chiamare in questo modo:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "accessoryDidConnectNotify:", name: EAAccessoryDidConnectNotification, object: nil) 

Utilizzando questo "accessoryDidConnectNotify:". qui devi aggiungere :.

Ora è possibile chiamare il metodo con parametri in questo modo:

func accessoryDidConnectNotify(notification: NSNotification){ 

    //Your code 
} 
Problemi correlati