Hallo, sorry, dass ich ein ähnliches Problem poste. Ich versuche mich gerade in jeglicher Hinsicht an Optionals. Das untenstehende Program hat super funktioniert. Jetzt habe ich die shouldChangeCharactersIn method implementiert mit delegate protokoll. Das Program ist gecrasht mit der Fehlermeldung :"Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value". Hat jemand eine Idee, was ich hier übersehen habe?? Danke.
Alles anzeigen
Quellcode
- import UIKit
- class ViewController: UIViewController, UITextFieldDelegate {
- //text input fields
- @IBOutlet weak var kgField: UITextField!
- @IBOutlet weak var poundsField: UITextField!
- @IBOutlet weak var litersField: UITextField!
- @IBOutlet weak var gallonsField: UITextField!
- @IBOutlet weak var kmField: UITextField!
- @IBOutlet weak var milesField: UITextField!
- //result text field
- @IBOutlet weak var poundsResult: UILabel!
- @IBOutlet weak var kgResult: UILabel!
- @IBOutlet weak var gallonsResult: UILabel!
- @IBOutlet weak var litersResult: UILabel!
- @IBOutlet weak var milesResult: UILabel!
- @IBOutlet weak var kmResult: UILabel!
- override func viewDidLoad() {
- super.viewDidLoad()
- kgField.delegate = self
- gallonsField.delegate = self
- poundsField.delegate = self
- kmField.delegate = self
- milesField.delegate = self
- litersField.delegate = self
- }
- //making it so only the characters in the string are allowed in the textfields
- func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
- {
- let allowedCharacters = "0.123456789"
- let allowedCharacterSet = CharacterSet(charactersIn: allowedCharacters)
- let typedCharacterSet = CharacterSet(charactersIn: string)
- return allowedCharacterSet.isSuperset(of: typedCharacterSet)
- }
- //conversion functions for each page
- @IBAction func milesToKM(_ sender: Any) {
- kmResult.text = "\(doConversion(conversionFactor: 1.6093, inputField: milesField))"
- }
- @IBAction func kmToMiles(_ sender: Any) {
- milesResult.text = "\(doConversion(conversionFactor: 0.62, inputField: kmField))"
- }
- @IBAction func litersToGallons(_ sender: Any) {
- gallonsResult.text = "\(doConversion(conversionFactor: 0.26, inputField: litersField))"
- }
- @IBAction func gallonsToLiters(_ sender: Any) {
- litersResult.text = "\(doConversion(conversionFactor: 3.78, inputField: gallonsField))"
- }
- @IBAction func kgToPounds(_ sender: Any) {
- poundsResult.text = "\(doConversion(conversionFactor: 2.2, inputField: kgField))"
- }
- @IBAction func poundsToKG(_ sender: Any) {
- kgResult.text = "\(doConversion(conversionFactor: 0.45, inputField: poundsField))"
- }
- var inputDouble = Double()
- var outputValue = Double()
- //conversion math function
- func doConversion(conversionFactor : Double, inputField : UITextField) -> Double
- {
- if Double(inputField.text!) != nil {
- let inputDouble = Double(inputField.text!)!
- outputValue = inputDouble * conversionFactor
- }
- else {
- outputValue = 0
- }
- return outputValue
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- }