ios - Swift 应用程序崩溃

标签 ios xcode swift

我正在尝试制作一个应用程序,它需要用户输入多个 25 美分、多个 10 美分、多个镍币和多个便士。然后,我想通过显示他们以美元输入的内容以及剩下的任何零钱来输出所有内容。我有可以创建所需输出的数学代码。我唯一的问题是我无法让 UIButtonCalculate 在输入输入后执行代码。我有 4 个文本字段(每种类型的硬币一个)。

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var quarterNum: UITextField!
@IBOutlet weak var dimeNum: UITextField!
@IBOutlet weak var nickelNum: UITextField!
@IBOutlet weak var pennyNum: UITextField!
@IBOutlet weak var calculate: UIButton!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var resultOutputLabel: UILabel!

var dollarAmount: Int = 0
var quarterAmount: Int = 0
var dimeAmount: Int = 0
var nickelAmount: Int = 0
var pennyAmount: Int = 0

var quarters: Int = 0
var dimes: Int = 0
var nickels: Int = 0
var pennies: Int = 0


@IBAction func exitButton(sender: UIButton) {
    exit(0)
}
override func viewDidLoad() {
    super.viewDidLoad()
    initializeTextFields()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
func initializeTextFields()
{
    quarterNum.delegate = self
    quarterNum.keyboardType = UIKeyboardType.NumberPad

    dimeNum.delegate = self
    dimeNum.keyboardType = UIKeyboardType.NumberPad

    nickelNum.delegate = self
    nickelNum.keyboardType = UIKeyboardType.NumberPad

    pennyNum.delegate = self
    pennyNum.keyboardType = UIKeyboardType.NumberPad
}
@IBAction func userTappedBackground(sender: AnyObject) {
    view.endEditing(true)
}
@IBAction func calculate(sender: UIButton) {
    quarters = Int(quarterNum.text!)!
    dimes = Int(dimeNum.text!)!
    nickels = Int(nickelNum.text!)!
    pennies = Int(pennyNum.text!)!

    var quarterCount = Int(quarters * 25)

    //all dimes * 10 gives the amount of dimes in penny value( 10 dimes = 100 pennies)
    var dimeCount = Int(dimes * 10)


    //all nickels * 5 gives the user the nickels in penny value(5 nickels = 25 pennies)
    var nickelCount = Int(nickels * 5)

    //all the pennies * 1 gives the cents value in pennies(10 pennies = 10 pennies)
    var pennyCount = Int(pennies * 1)

    //Adding all the values together to get the total amount of pennies
    //totalPennies = all the values above added together
    var totalPennies = Int(pennyCount + nickelCount + dimeCount + quarterCount)

    var dollarAmount = totalPennies / 100
    totalPennies %= 100;

    var quarterDollars = totalPennies / 25
    totalPennies %= 25;

    var dimeDollars = totalPennies / 10
    totalPennies %= 10

    var nickelDollars = totalPennies / 5
    totalPennies %= 5

    var pennyDollars = totalPennies / 1
    totalPennies %= 1

    resultOutputLabel.text = String("There is/are ",  String(dollarAmount) , " dollar(s), " , String(quarterDollars) , " quarter(s), " , String(dimeDollars) , " dime(s), " , String(nickelDollars) , " nickel(s), " , String(pennyDollars) , " penny/ies. ")

  }
}

这是我的代码。构建成功并且一切都编译,只有在我尝试输入数字后才出现问题。

最佳答案

这些计算可能是导致崩溃的原因,具体取决于您在文本字段中输入的内容。

quarters = Int(quarterNum.text!)!
dimes = Int(dimeNum.text!)!
nickels = Int(nickelNum.text!)!
pennies = Int(pennyNum.text!)!

一般来说,

var x : Int = Int("1") // returns an optional

因此,您这样做了:

var x : Int = Int("1")!

异常(exception)的是,如果传递给 Int() 的值无法转换为 Int,则返回值为 nil。这会导致此时或使用 x 时崩溃。

虽然它增加了复杂性,但您需要准备好处理字符串不可转换的情况。

var x = Int("blah")
if let x = x {
    // conversion to Int success
} else {
    // unable to convert
}

关于ios - Swift 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076188/

相关文章:

iOS Swift 用户默认观察者错误消息已收到但未处理

ios - Quickblox + Swift 3.0 iOS SDK 错误 : No Application Found and QBConnectionZoneTypeProduction

ios - 如何判断我在 Xcode UI 测试中使用的是哪个设备?

cocoa - 为什么单元测试中的代码无法找到捆绑资源?

ios - UICollectionView AutoSize 标题高度

iphone - 无法从现有源代码创建新的静态库

ios - Xcode 11.4 不生成自定义意图类

swift - Xcode头文件命令点击

ios - 创建一个只有一个对角线的 UIView

ios - 是否可以转至 UIPageViewController?