我正在尝试用UITextFields提供的用户输入数字进行数学计算。问题是,TextField中可能没有任何内容,在这种情况下,该值应设置为零。我尝试了守卫声明,但似乎我用错了方法:
guard let number = numberTextField.text else{ let number = 0}
这段代码有什么问题?我应该改变什么?
答案 0 :(得分:4)
无法使用guard
语句,因为如果条件为false
,则需要您退出该函数。相反,您应该使用??
运算符:
let number = numberTextField.text.flatMap { Int($0) } ?? 0
为什么flatMap
?因为我们需要将String
转换为Int
(或Double
,如果这可能包含浮点值),以使其与{{0
相同1}}。如果flatMap
不是text
,则可选项上的nil
会返回闭包内的值,但如果匹配则返回nil
。在任何一种情况下,您最终都会选择Int
,然后通过0
运算符提供默认值??
,使其成为非可选项。
答案 1 :(得分:0)
您希望使用默认值而不是警卫来获取您想要的行为。
let number = Double(numberTextField.text) ?? 0
答案 2 :(得分:-1)
没有什么意思是空字符串而不是零 “guard let”用于检查nil值
试试下面的方法
if numberTextField.text.isEmpty {
let number = 0
}