2016-05-10 6 views
0

Nicht erkannte Selektor Instanz gesendet 0x7feca9469620 2016.05.10 19: 34: 58,781 TribeA2 [76123: 4.834.825] *** Beenden app aufgrund abgefangene Ausnahme 'NSInvalidArgumentException' Grund: '- [TribeA2.RegisterPageViewController registerButtonTapped:]: Unbekannter Selektor zum Beispiel 0x7feca9469620 gesendet'Swift Projekt Terminating mit abgefangene Ausnahme des Typs NSException

mit abgefangene Ausnahme vom Typ Abschluss NSException.

import UIKit 

class RegisterPageViewController: UIViewController { 



@IBOutlet weak var userFirstNameTextField: UITextField! 
@IBOutlet weak var userLastNameTextField: UITextField! 
@IBOutlet weak var userEmailTextField: UITextField! 
@IBOutlet weak var userPasswordTextField: UITextField! 


var databasePath = NSString() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let filemgr = NSFileManager.defaultManager() 
    let dirPaths = 
     NSSearchPathForDirectoriesInDomains(.DocumentDirectory, 
              .UserDomainMask, true) 

    let docsDir = dirPaths[0] 

    databasePath = (docsDir as NSString).stringByAppendingPathComponent(
     "users.db") 

    if !filemgr.fileExistsAtPath(databasePath as String) { 

     let userDB = PersonDatabase(path: databasePath as String) 

     if userDB == nil { 
      print("Error: \(userDB.lastErrorMessage())") 
     } 

     if userDB.open() { 
      let sql_stmt = "CREATE TABLE IF NOT EXISTS USERS (ID INTEGER PRIMARY KEY AUTOINCREMENT, FNAME TEXT, LNAME TEXT, EMAIL TEXT, PASSWORD TEXT)" 
      if !userDB.executeStatements(sql_stmt) { 
       print("Error: \(userDB.lastErrorMessage())") 
      } 
      userDB.close() 
     } else { 
      print("Error: \(userDB.lastErrorMessage())") 
     } 
    } 


} 


@IBAction func saveData(sender: AnyObject) { 
    let userDB = PersonDatabase(path: databasePath as String) 

    if userDB.open() { 

     func displayMyAlertMessage(userMessage:String) 
     { 
      let myAlert = UIAlertController(title:"Alert", message: 
       userMessage, preferredStyle: 
       UIAlertControllerStyle.Alert); 

      let okAction = UIAlertAction(title:"Ok", style: 
       UIAlertActionStyle.Default, handler:nil) 

      myAlert.addAction(okAction) 

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

     } 


     let insertSQL = "INSERT INTO USERS (fname, lname, email, password) VALUES ('\(userFirstNameTextField.text)', '\(userLastNameTextField.text)' '\(userEmailTextField.text)', '\(userPasswordTextField.text)')" 

     let result = userDB.executeUpdate(insertSQL, withArgumentsInArray: nil) 

     if !result { 
      displayMyAlertMessage("All fields are required") 
      print("Error: \(userDB.lastErrorMessage())") 
      return 
     } else { 
      displayMyAlertMessage("Thank you for registering \(userFirstNameTextField.text)") 
    } 
} 

Antwort

2

in RegisterPageViewController wurden Sie erstellt die registerButtonTapped Button-Aktion, aber Taste Methode nicht implementiert, wenn Sie nicht die registerButtonTapped von Attribut-Inspektor löschen verwendet werden, sonst auf die Schaltfläche Aktion auf Klasse implenent wie folgt

func registerButtonTapped(sender: UIButton) 
    { 
    } 
1

Wenn Sie im Interface Builder mit der rechten Maustaste auf diese Schaltfläche klicken, wird ein Popup angezeigt, in dem Sie sehen können, dass Sie eine Aktion mit dem Namen -registerButtonTapped: für Ihre Klasse verbunden haben, aber Sie haben diese Methode (oder Sie) nicht implementiert löschte es aus irgendeinem Grund). Also müssen Sie diese Verbindung löschen, indem Sie in diesem Popup entweder auf die Schaltfläche x klicken oder die Methode -registerButtonTapped: implementieren.

0

Wenn Sie mit der rechten Maustaste auf die Schaltfläche klicken, zeigt die Schaltfläche die Aktion oder Variablen an, die zugeordnet sind. Überprüfen Sie, ob in Ihrem Controller

verfügbar ist
Verwandte Themen