【发布时间】:2019-01-13 15:34:12
【问题描述】:
我知道有关于此异常的可用答案,但对我没有任何帮助。
我的代码工作正常,我必须将文本字段的文本转换为 Int,但现在我注意到当我输入超过 10 个字符时它会崩溃。
我已将这些文本字段的字符限制设置为 11,但它在最后一个数字上崩溃并出现错误:线程 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)。
这里是代码
@IBAction func Qty_EndEdit(_ sender: Any) {
print("For Total Cost")
if QtyText.text != ""{
if UnitPriceText.text != "" {
TotalCostText.text = String((QtyText.text?.numberValue)! * (UnitPriceText.text?.numberValue)!)
}
}
}
@IBAction func UnitPrice_EndEdit(_ sender: Any) {
print("For Total Cost")
if QtyText.text != ""{
if UnitPriceText.text != "" {
TotalCostText.text = String((QtyText.text?.numberValue)! * (UnitPriceText.text?.numberValue)!)
// CRASHING ON THE ABOVE LINE
}
}
}
extension String {
var numberValue:Int? {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return formatter.number(from: self) as! Int
}
}
【问题讨论】:
-
QtyText和UnitPriceText是什么?您的numberValue字符串属性的实现是什么? -
请花时间学习如何正确使用可选选项。将
?与!结合起来真的没有意义。 -
@YannickLoriot 这是两个文本字段,通过 numberValue 我从 String 中获取 Int。
-
@YannickLoriot 并且只有在文本字段中输入最后一个(第 11 个)字符时才会崩溃,否则它计算正常并在 TotalCost 字段中显示结果
-
@rmaddy 我了解选项,但文本字段不为空,这就是我强制展开的原因。
标签: ios swift exception type-conversion