当我旋转pickerView时,应用程序正在崩溃

时间:2017-06-27 22:41:51

标签: ios swift swift3

import UIKit
import MessageUI

class RechnungViewController: UIViewController , UIPickerViewDelegate, UIPickerViewDataSource, MFMailComposeViewControllerDelegate {


@IBOutlet weak var pickerViewKunde: UIPickerView!
@IBOutlet weak var pickerViewAufgabe: UIPickerView!

@IBOutlet weak var anzahlStundenField: UITextField!

var allKunden = [Kunde]()
var allAufgaben = [Aufgabe]()

var kundeName: String? = ""
var kundeEmail: String? = ""
var aufgabeName: String? = ""
var aufgabePreisString: String? = ""
var endPreis: Int? = 0

@IBAction func rechnungBtn(_ sender: Any) {
    self.berechneRechnung()
    let aufgabePreisInt = Int(aufgabePreisString!)
    let anzStundenInt = Int(anzahlStundenField.text!)
    var endPreis = aufgabePreisInt! * anzStundenInt!


    let composeView = MFMailComposeViewController()
    composeView.mailComposeDelegate = self
    composeView.setToRecipients([kundeEmail!])
    composeView.setSubject("Aktuelle Rechnung")
    composeView.setMessageBody("Sehr geehrte Damen und Herren, \n anbei die Rechnung für folgende Leistung: \n \(aufgabeName ?? "Es ist ein fehler Aufgetreten") über einen Zeitraum von \(anzahlStundenField.text ?? "Es ist ein fehler Aufgetreten") Stunden. \n Daraus ergiebt sich ein Betrag von \(endPreis)Bitte überweisen Sie den Betrag in den nächsten 10 Tagen. \n Mit freundlichen Grüssen \n XY ", isHTML: false)

    if MFMailComposeViewController.canSendMail() {
        self.present(composeView, animated: true, completion: nil)
    } else {
        let alert = UIAlertController(title: "Fehler", message: "Mailversand ncht möglich", preferredStyle: .alert)

        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
            self.present(alert, animated: true, completion: nil)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.getAllKunden()
    self.getAllAufgaben()
}

func getAllKunden() {

    let arr : ArrayKundeResource = ArrayKundeResource()
    self.allKunden = arr.getList()

    print(self.allKunden.count)
}

func getAllAufgaben() {

    let arr : ArrayAufgabeResource = ArrayAufgabeResource()
    self.allAufgaben = arr.getList()

    print(self.allAufgaben.count)
}

func berechneRechnung() {
    let aufgabePreisInt = Int(aufgabePreisString!)
    let anzStundenInt = Int(anzahlStundenField.text!)
    endPreis = aufgabePreisInt! * anzStundenInt!
}

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    var rowCount: Int = self.allKunden.count

    if pickerView == pickerViewAufgabe{
        rowCount = self.allAufgaben.count
    }
    return rowCount
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

    if pickerView == pickerViewKunde {

        if self.allKunden.isEmpty == false {
            return self.allKunden[row].name
        }
    } else if pickerView == pickerViewAufgabe {
        let rowTitle = self.allAufgaben[row]
        return rowTitle.nameDerAufgabe
    }
    return "nicht Vorhanden"
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if pickerView == pickerViewKunde {
        self.kundeName = self.allKunden[row].name
        self.kundeEmail = self.allKunden[row].email
    }else if pickerView == pickerViewAufgabe {
        self.aufgabeName = self.allAufgaben[row].nameDerAufgabe
        self.aufgabePreisString = self.allAufgaben[row].preisProStunde
    }
}
}

现在我的问题如下。

当我旋转一个pickerView时,应用程序崩溃,错误代码为Thread 1:Signal SIGABRT 当我点击按钮创建邮件时,应用程序再次崩溃,错误代码为线程1:EXC_BAD_INSTRUCTION

我已经说过了谢谢你的帮助。

0 个答案:

没有答案