2016-05-10 7 views
0
タイプのキャッチされない例外で終了

は認識されないセレクターをインスタンスに0x7feca9469620 2016年5月10日 19を送信58.781 TribeA2 [76123:4834825] *** キャッチされない例外 'NSInvalidArgumentException' による終了アプリ理由: - タイプNSExceptionのキャッチされない例外で終了スイフトプロジェクトNSException

'[TribeA2.RegisterPageViewController registerButtonTappedは:] 未認識セレクタインスタンス0x7feca9469620に送ら'。

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

答えて

2

RegisterPageViewControllerにあなたはregisterButtonTappedボタンアクションを作成しましたが、あなたは他に以下の

func registerButtonTapped(sender: UIButton) 
    { 
    } 
のようなクラス上のボタンアクションをimplenent、属性インスペクタから削除 registerButtonTappedを使用されていない場合は、ボタンの方法は、実装されていません
1

インターフェイスビルダーでそのボタンを右クリックすると、アクションに「-registerButtonTapped:」という名前で接続されていることがわかるポップアップが表示されますが、実際にはそのメソッドを実装していません(または何らかの理由でそれを削除しました)。だからあなたは、そのポップアップでxボタンをクリックすることによってその接続を削除しなければならないか、-registerButtonTapped:メソッドを実装するか、

0

ボタンを右クリックすると、関連するアクションが表示されます。コントローラーで使用できる場合はチェックしてください。

関連する問題