所以基本上我正在创建一个计算器类型的应用程序,其中我只想摄入数字、小数和负号。我对Xcode和swift相当陌生,所以我不会认为我的知识广泛,当涉及到知道如何处理这些类型的问题。
这是我目前尝试的解决方案
let v = Double(inputOne.text!)!
(inputOne.是关联的文本字段)
在我的算法中,当所有的东西都按照应该的方式输入时,这个算法工作得很好,但是当输入有效的双数以外的任何东西时,我收到 "Fatal error. Unexpected found nil while unwrapping an Optional value"(致命错误。Unexpected found nil while unwrapping an Optional value", and the app crashes.
我想可能有人已经想出了一个创造性的解决方案来解决这个问题,或者在Xcode中可能有一些命令以这种方式限制文本字段,然而我是Xcode的新手,不知道是否存在这样的东西。也许有什么方法可以让我实现一个错误信息,只要输入的不是有效的双数就会发生,而不会让应用程序崩溃?任何有创意的解决方案都将被感激。
你可以使用一个UITextView作为你的输入字段(如果你想要一个单行输入,使用textField)。然后,简单地将你的ViewController设置为textView的委托人--在ViewController中添加以下一行(别忘了继承UITextViewDelegate)。
textView.delegate = self
本质上,这就是允许ViewController拥有textView的一些功能。在本例中,我们对过滤用户输入感兴趣,为此你可以使用以下功能。
/// Intercept whatever character the user is typing on the keyboard
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
// If the user presses "enter", handle it the way you want
guard text.rangeOfCharacter(from: CharacterSet.newlines) == nil else {
// Handle new line
}
// If character is a digit, a dot, or a dash, allow input, else reject it.
if text == "-" || text.rangeOfCharacter(from: CharacterSet.decimalDigits) != nil || text == "." {
return true
} else {
return false
}
}