当前位置: 首页 > 知识库问答 >
问题:

可选类型“Bool”不能用作布尔值;改为测试“!=nil”

陈誉
2023-03-14

可选类型“Bool”不能用作布尔值;改为测试“!=nil”

我在第一个if中得到了一个错误,通过替换if条件(之后的),第二个if条件从未运行。你知道吗?

if(userEmail?.isEmpty || userPassword?.isEmpty || userRepeatPassword?.isEmpty){
      displayMyAlertMessage("All fields are required")
      return
}

if(userPassword != userRepeatPassword){
      displayMyAlertMessage("Passwords do not match.")
}
if(userEmail != nil || userPassword != nil || userRepeatPassword != nil){
      displayMyAlertMessage("All fields are required")
      return
}

if(userPassword != userRepeatPassword){
      displayMyAlertMessage("Passwords do not match.")
}

共有3个答案

骆嘉石
2023-03-14

您正在检查值是否与nil不同,如果是,则返回,基于您的注释和您的第二个值,如果您可能想要检查它是否为nil。

println("Checking login details")
if(userEmail.isEmpty || userPassword.isEmpty || userRepeatPassword.isEmpty){
      displayMyAlertMessage("All fields are required")
      println("Fail to login not all fields where fill") 
      return
} else if(userPassword != userRepeatPassword){
      displayMyAlertMessage("Passwords do not match.")
      println("Fail to login password does not match") 
} else {  
  var uiAlert = UIAlertController(title: "Alert", message: "Registration was successful", preferredStyle: UIAlertControllerStyle.Alert)
  self.presentViewController(uiAlert, animated: true, completion: nil)
  uiAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { action in
   dismissViewControllerAnimated(true, completion:nil)
  }))
}
松英喆
2023-03-14
if(userEmail!.isEmpty || userPassword!.isEmpty || userRepeatPassword!.isEmpty)

您不能检查可选值,因为您可能已经知道,作为可选值意味着它可以或不可以在那里。一种解决方案称为强制展开,它是通过使用 "!" ( 感叹号 ). "?" ( 问号)来完成的,只是让编译器知道可能有或可能没有值,所以使用“!”我们告诉编译器我们知道它可能是或可能不是该变量中的值,但我们知道会有一个,即使它是一个空字符串,这与其他考虑空字符串或空数组(如“false”)的编程语言不同。swift不是这种情况。

条件语句中的表达式必须是有效的布尔结果。

长孙星汉
2023-03-14

你需要用 而不是来包装它。
这将解决错误消息

if (username!.isEmpty) .....
 类似资料:
  • 我是个新手,这可能是个很简单的错误,但我需要一个很好的解释。我有一个Xcode错误 可选类型'Bool'不能用作布尔值;改为测试'!=nil' 对于第二行<代码> segue 我正在观看YouTube视频,以遵循待办事项列表的步骤。

  • Python 提供了 bool 类型来表示真(对)或假(错),比如常见的 比较算式,这个是正确的,在程序世界里称之为真(对),Python 使用 True 来代表;再比如 比较算式,这个是错误的,在程序世界里称之为假(错),Python 使用 False 来代表。 True 和 False 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的大小写,否则解释器会报错。

  • 在C语言中,关系运算和逻辑运算的结果有两种,真和假:0 表示假,非 0 表示真。例如: 运行结果: 10 20↙ flag = 0 C语言并没有彻底从语法上支持“真”和“假”,只是用 0 和非 0 来代表。这点在 C++ 中得到了改善,C++ 新增了 bool 类型(布尔类型),它一般占用 1 个字节长度。bool 类型只有两个取值,true 和 false:true 表示“真”,false 表示

  • 2.4 布尔类型 bool 布尔是 19 世纪英国数学家,他建立了命题代数,简单说就是将逻辑推理变成了代数计 算。所谓命题就是可以判断真假的语句,因此在编程语言中,将真、假两个值构成了一个类 型,即布尔类型,真和假也称为布尔值。以真或假为值的表达式称为布尔表达式,它在程序 设计中的作用是描述某种条件,以支持“如果某条件满足,则执行某语句”之类的处理过程。 第 3 章将学习的条件和循环语句中都会用到

  • 一个布尔类型的值只有两种:true 或 false。if 和 for 语句的条件部分都是布尔类型的值,并且 和 等比较操作也会产生布尔型的值。 一元操作符 对应逻辑非操作,因此 的值为 false,更复杂一些的写法是 ,实际开发中我们应尽量采用比较简洁的布尔表达式,就像用 x 来表示 。 Go语言对于值之间的比较有非常严格的限制,只有两个相同类型的值才可以进行比较,如果值的类型是接口(interf

  • 本文主要介绍了Go语言中处理布尔类型数据的数据类型。布尔类型的数据表示逻辑运算结果,有以 下两种取值: 真,使用 True 关键字表示。 假,使用 False 关键字表示。 1.布尔类型 序号 类型 说明 1 bool 只能存放true或者false 2.使用示例 package main import "fmt" func main() { var varb bool var