我想问一下病人的年龄,看看他/她是否成年。它总是返回false(参数总是小于18)!!
代码如下:

var index = 0
    let patAge = Double(txtAge.text!)
    if (txtAge.text?.characters.count == 0){
        index = 0
        while index < medicationMenuItems.count{
            medicationMenuItems[index].medicationName = medicationNames[index]
            index += 1
        }
    } else {
        if (patAge?.isLess(than: 18))!{
            index = 0
            while index < medicationMenuItems.count{
                medicationMenuItems[index].medicationName = medicationNames[index] + ": Adult?"
                index += 1
            }
        }
    }
    tableViewMedications.reloadData()

一般来说:我怎样才能把文字读成双倍??如何将计算转换为字符串??
我还试图在double的文本字段中设置一个文本,但它要么返回一个错误,要么返回一个“Optional(textgoesher)”,其中应该只给出“textgoesher”:
let temporaryString = String(doubleValue)
txtAge.text = temporaryString

它返回一个错误,我应该给出“String(description:doubleValue)!!!
有什么想法吗??

最佳答案

正如Vadian提到的,你应该使用Int,除非你出于任何原因需要一个部分年龄。另外,在检查字符串的字符数时,我强烈建议您调用此命令,而不是使用普通键盘时的命令:

txtAge.text?.replace(" ", replacement: "").characters.count

以防止任何进一步的错误。
第二,而不是像这样包装双层:
String(doubleValue)

你应该这样做:
txtAge.text = "\(doubleValue)"

如果你坚持让它保持双精度,如果你想显示一个整数,而不是一个带小数的数字,也许可以考虑先把它转换成一个整数。

关于ios - 无法从UITextField中读取XCode 8中的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43009590/

10-12 14:42