Bool类型的隐含展开似乎不起作用:
var aBoolean: Bool!    // nil
aBoolean = false       // false
aBoolean               // false

aBoolean == true       // false
aBoolean == false      // true

if aBoolean {
    "Hum..."            // "Hum..."
} else {
    "normal"
}

if aBoolean! {
    "Hum..."
} else {
    "normal"          // "normal"
}

如果我已经声明了一个类似于var aBoolean的Boolean:Bool?,那么这将是预期的行为,但在这里,我没有得到它.

这是正确的行为吗?我没有找到任何文档.

谢谢!

第一个测试是检查aBoolean是否存储一个值而不是nil,它的作用是:
if aBoolean {
    "Hum..."            // "Hum..."
else {
    "normal"
}

第二个测试是检查存储在aBoolean中的实际布尔值,它是false:

if aBoolean! {
    "Hum..."
} else {
    "normal"          // "normal"
}

这是在Swift书中的“隐含包装的可选项”部分中说明的.我认为隐式解包只是不适用于if语句.我同意这是奇怪的,但这里是苹果的例子:

你仍然可以像一个常规的可选项一样处理一个隐式解开的可选项,以检查它是否包含一个值:

let assumedString: String! = "An implicitly unwrapped optional string."

if assumedString {
    println(assumedString)
}
// prints "An implicitly unwrapped optional string."

摘录自:苹果公司“Swift编程语言”iBooks. https://itun.es/us/jEUH0.l

swift – 可选布尔值的隐式展开的更多相关文章

  1. ios – 将两个字符串转换为一组布尔值的快速方法是什么?

    我有一个长字符串,我想转换为一个布尔值数组.而且它需要很多次,很快.我天真的尝试是这样的:但这比我想要的要慢很多.我的剖析告诉我,地图是减速的地方,但我不知道我能做多么简单.我觉得如果没有Swift’s/ObjC的开销,这样做会很快.在C中,我认为这是一个简单的循环,其中一个字节的内存与一个常量进行比较,但我不知道我应该看的是什么函数或语法.有更好的办法吗?

  2. Swift语法基础:10 - Swift的布尔值, 元组, 可选, 断言

    3.一个可选值现在是nil,但是后面的代码运行需要一个非nil值。

  3. swift – 检查可选Bool的值

    如果我使用可选Bool,我总是需要做如果boolean==true?因为Optionals不再符合BooleanType,编译器不知道我想检查Bool的值吗?

  4. 2.1 Swift的(Boolean)布尔类型 [Swift原创教程]

    这里声明了一个值为true的常量,该常量被推测为布尔类型,因为它被布尔值所初始化。在判断语句中,只能对布尔类型进行判断。

  5. swift – 多个让一个守卫声明和一个let一样吗?

    这些在Swift3中有所不同.在这种情况下:你说’可选–解开foo吧.如果成功,可选择将taco打包成qux.如果成功继续.其他……

  6. swift – 可选布尔值的隐式展开

    Bool类型的隐含展开似乎不起作用:如果我已经声明了一个类似于varaBoolean的Boolean:Bool?,那么这将是预期的行为,但在这里,我没有得到它.这是正确的行为吗?我没有找到任何文档.谢谢!

  7. android – 在AppWidget Provider中获取首选项

    我似乎无法从appwidgetprovider类中读取首选项.我的代码在Activity中工作,但它不在appwidgetprovider中.这是我用来回读布尔值的代码:但是,我得到“方法getSharedPreferences(String,int)未定义类型小部件”错误(小部件是我的appwidgetprovider类的名称).在此先感谢您的任何建议!解决方法getSharedPreferen

  8. android – 在日志中打印布尔值

    我可以打印字符串值,但我不知道如何在日志消息中打印布尔值.解决方法是.要么

  9. PHP 布尔值的自增与自减的实现方法

    这篇文章主要介绍了PHP 布尔值的自增与自减的实现方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧

  10. Wix布尔属性值不起作用

    我有以下财产:UI中的一个复选框绑定到该属性:以及根据此属性的值执行某项操作的自定义操作如果我尝试从命令行为UPDATEDB传递值0:要么无论如何都要检查复选框的值.也就是说,传入的0似乎得到了尊重,RunDbMigration动作没有运行……这里发生了什么?正如其他人所提到的,CheckBox在1/0意义上不是布尔值,它们在null/not-null意义上是布尔值.要从命令行取消设置–您可能希望使用类似的东西在执行自定义操作之前,您的条件可能是专门针对值1,这就是您的CA未运行的原因.

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部