2017-06-13 23 views
1

所以我想編寫一個「瘋狂庫」爲主題的一類我在應用程序,但我不斷收到一個傳遞數據從班上課

EXC_BAD_INSTRUCTION

錯誤時我點擊提交按鈕。班上的其他學生也不知道。請幫幫我!

這裏是我的firstViewController.swift:

import UIKit 

class ViewController: UIViewController 
{ 
    @IBOutlet weak var firstTextField: UITextField! //adjective 
    @IBOutlet weak var secondTextField: UITextField! //male name 
    @IBOutlet weak var thirdTextField: UITextField! //verb 
    @IBOutlet weak var fourthTextField: UITextField! //female name 
    @IBOutlet weak var fifthTextField: UITextField! //adjective 
    @IBOutlet weak var sixthTextField: UITextField! //athlete 
    @IBOutlet weak var seventhTextField: UITextField! //food 
    @IBOutlet weak var eighthTextField: UITextField! //restaurant name 
    var userInfo = myCustomClass() 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    { 
     userInfo.adjectiveOne = firstTextField.text! 
     userInfo.maleName = secondTextField.text! 
     userInfo.verb = thirdTextField.text! 
     userInfo.femaleName = fourthTextField.text! 
     userInfo.adjectiveTwo = fifthTextField.text! 
     userInfo.athlete = sixthTextField.text! 
     userInfo.food = seventhTextField.text! 
     userInfo.restaurantName = eighthTextField.text! 
     let nextView = segue.destination as! secondViewController 
     nextView.passedObject = userInfo 
    } 
} 

這裏是我的secondViewController.swift:

import UIKit 

class secondViewController: UIViewController 
{ 
    var passedObject = myCustomClass() 
    @IBOutlet weak var myFinishedProduct: UILabel! 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     myFinishedProduct.text = "There was once a \(passedObject.adjectiveOne) man /n \(passedObject.maleName). One day while he was \(passedObject.verb) he saw /n \(passedObject.femaleName), a rather \(passedObject.adjectiveTwo) woman. /n She was also a \(passedObject.athlete), and a very good /n one too. The two went to lunch together at \(passedObject.restaurantName) /n and ate some \(passedObject.food). After /n that they never crossed paths again." 
    } 
} 

最後在這裏被稱爲 「myCustomClass.swift」 我NSObject的:

import UIKit 

class myCustomClass: NSObject 
{ 
    var adjectiveOne = "" 
    var maleName = "" 
    var verb = "" 
    var femaleName = "" 
    var adjectiveTwo = "" 
    var athlete = "" 
    var food = "" 
    var restaurantName = "" 
} 

基本上,無論用戶輸入八個文本字段,都將存儲在myCustomClass中按下提交按鈕。從那裏,在第二個ViewController中,它將把八個輸入放到故事中並顯示在標籤上。

任何幫助表示讚賞,謝謝!

編輯:「提交按鈕」連接到我的故事書中的secondViewController,目的是「顯示」。

+0

添加例外breakpoin t在Xcode中,讓我們知道問題發生的位置以及顯示的確切錯誤。可能是'prepare'中的多重'!'中的一個。 – shallowThought

+0

還要將完整的錯誤消息添加到您的問題中,並使用調試器來逐步執行代碼。查找錯誤應該不超過1分鐘(如果您閱讀完整的錯誤消息並添加異常斷點,則應該立即生效)。 –

回答

0

第一個視圖控制器

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var txtmobile: UITextField! 
    @IBOutlet weak var txtlname: UITextField! 
    @IBOutlet weak var txtfname: UITextField! 
    var ArrayStudent:[PassData] = [] 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func btnclick(_ sender: UIButton) 
    { 
     let objdata = PassData(fname: txtfname.text!, lname: txtlname.text!, mobile: txtmobile.text!) 
     ArrayStudent.append(objdata) 
     passdata() 

    } 
    func passdata() 
    { 
     let objstory = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
     objstory.Arradata1 = ArrayStudent 
     _ = self.navigationController?.pushViewController(objstory, animated: true) 
    } 

} 

第二個視圖控制器

import UIKit 

    class SecondViewController: UIViewController { 

     @IBOutlet weak var lblmobile: UILabel! 
     @IBOutlet weak var lbllastname: UILabel! 
     @IBOutlet weak var lblname: UILabel! 
     var Arradata1:[PassData ] = [] 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      lblname.text = Arradata1.first?.StrFirstName 
      lbllastname.text = Arradata1.first?.StrLastName 
      lblmobile.text = Arradata1.first?.StrMobile 

      // Do any additional setup after loading the view. 
     } 

     override func didReceiveMemoryWarning() { 
      super.didReceiveMemoryWarning() 
      // Dispose of any resources that can be recreated. 
     } 

NSObject類

import UIKit 

    class PassData: NSObject 
    { 
     var StrFirstName:String! 
     var StrLastName:String! 
     var StrMobile:String! 
     init(fname:String , lname:String , mobile:String) 

     { 
      StrMobile = mobile 
      StrFirstName = fname 
      StrLastName = lname 
     } 
    }