textField中的以下代码(_ textField: UITextField,shouldChangeCharactersIn range: NSRange,replacementString string: String)导致此错误:命令由于信号失败:分段错误: 11原因
var finalStr = (textField.text! as NSString).replacingCharacters(in: range, with: string)
if textfield == mobile && finalStr.hasPrefix("0"){
textField.text = finalStr.nonZeroNumber
return false }
var nonZeroNumber:String{
let local = Double(self)
return String(format: "%.0f",local!)
}
代码有什么问题,因为它在示例项目中运行得很好。
发布于 2018-04-04 15:27:13
您强制展开本地,而不检查它是否为零,这可能是如果您有非数字字符。
您需要一个默认值,或者将方法更改为在失败时返回零,并在其他地方检查是否为零。
var nonZeroNumber:String{
let local = Double(self) ?? 0 // use 0 if Double(self) was nil
return String(format: "%.0f",local) // local, not local!
}
或
var nonZeroNumber: String? { // note Optional
guard let local = Double(self) else {
return nil
}
return String(format: "%.0f, local)
}
...
textField.text = finalStr.nonZeroNumber ?? "default value"
https://stackoverflow.com/questions/49652424
复制相似问题