swift - 守卫让我们发现零
问题描述
我是新来的守卫让模式。为什么我的应用程序崩溃而selectedRooms.text
不是nil
返回部分?rooms
当我知道numberOfRooms
不是时,为什么是可选类型nil
?
guard let numberOfRooms = selectedRooms.text else {
return selectedRooms.placeholder = "type something"
}
let rooms = Int(numberOfRooms)
x = Int(ceil(sqrt(Double(rooms!)))) //found nil value
解决方案
selectedRooms.text
无法返回nil
。
AUITextField
并且UITextView
总是返回一个String
值。如果 中没有文本,则返回空String
( ) 。这就是part 没有执行而value 是.""
UITextField and UITextView
else
rooms
nil
现在,在下面的语句中,您将强制展开(!
)rooms
.
x = Int(ceil(sqrt(Double(rooms!))))
但是,因为rooms
是nil
,所以强行解包它会引发运行时异常。
解决方案:
您还需要添加一个空检查以使该else
部分生效,即
guard let numberOfRooms = selectedRooms.text, !numberOfRooms.isEmpty else { //here...
return selectedRooms.placeholder = "type something"
}
推荐阅读
- html - primeng 表中的下拉行
- php - 如何使用 PhpStorm 在我的本地计算机上编辑和运行 WordPress 站点
- angular - 所有其他选择选项的选择选项值更改
- javascript - 网站正在从我离开的那个部分打开
- node.js - 创建多个 PDF 并将其交付给客户
- javascript - 在函数中使用全局变量访问输入值不起作用
- laravel - 如果密码正确则删除
- java - Open API Maven Plugin - 仅生成特定的 API 模型类
- dependency-injection - 使用 NUnit 时将自定义记录器注入 Specflow 框架
- sql - 使用新列名取消透视