我们知道,我们可以使用一个if let语句作为速记,检查一个可选的nil然后unwrap。

但是,我想使用逻辑AND运算符&&&&

所以,例如,在这里我做可选链接解开和可选的我的rootViewController到tabBarController。但不是嵌套if语句,我想把它们结合起来。

if let tabBarController = window!.rootViewController as? UITabBarController {
    if tabBarController.viewControllers.count > 0 {
        println("do stuff")
     }
 }

组合给予:

if let tabBarController = window!.rootViewController as? UITabBarController &&
    tabBarController.viewControllers.count > 0 {
        println("do stuff")
     }
}

上面给出了编译错误使用未解析的标识符’tabBarController’

简化:

if let tabBarController = window!.rootViewController as? UITabBarController && true {
   println("do stuff")
}

这给出了编译错误条件绑定中的绑定值必须是可选类型。尝试了各种句法变化,每个都给出不同的编译器错误。我还没有找到订单和括号的获胜组合。

所以,问题是,是否可能,如果是什么是正确的语法?

注意,我想这样做与if语句不是switch语句或三元?运算符。

从Swift 1.2开始,这是可能的。 Swift 1.2 and Xcode 6.3 beta release notes状态:

More powerful optional unwrapping with if let — The if let construct
can Now unwrap multiple optionals at once,as well as include
intervening boolean conditions. This lets you express conditional
control flow without unnecessary nesting.

使用上面的语句,语法将是:

if let tabBarController = window!.rootViewController as? UITabBarController where tabBarController.viewControllers.count > 0 {
        println("do stuff")
}

这使用where子句。

另一个例子,这次将AnyObject转换为Int,解包可选,并检查解包的可选符合条件:

if let w = width as? Int where w < 500
{
    println("success!")
}

使用Swift如果允许使用逻辑AND运算符\u0026\u0026的更多相关文章

  1. Xcode:用于条件DEBUG / TEST代码的预处理器宏

    我在我的代码(例如AppDelegate.m)中有不应该为单元测试编译的部分,例如当您在创建新项目时选择“添加单元测试”时,目标是由Xcode设置的.在项目文件中,我已将标志CONfigURATION_TESTS添加到内置目标的MyAppTests的预处理器宏中,但未添加到MyApp目标.这是我发现的许多帖子中的建议方式.但是这不起作用,因为(我猜)MyAppTests目标将MyApp目标作为依赖

  2. Swift 条件编译

    在C系语言中,可以使用#if或者#ifdef之类的编译条件分支来控制哪些代码需要编译,而哪些代码不需要。Swift中没有宏定义的概念,因此我们不能使用#ifdef的方法来检查某个符号是否经过宏定义。但是为了控制编译流程和内容,Swift还是为我们提供了几种简单的机制来根据需求定制编译内容的。Swift内建了几种平台和架构的组合,来帮助我们为不同的平台编译不同的代码,具体地:方法os(),可选参数OSX,iOS方法arch(),可选参数x86_64,arm,arm64,i386注意这些方法和参数都是大小写敏

  3. 二 Swift学习之基本运算符

    二Swift学习之基本运算符————–借鉴老码团队翻译组-Tyrion1.1术语运算符有一元、二元和三元运算符。三元运算符操作三个操作对象,和C语言一样,Swift只有一个三元运算符,就是三目运算符(a?这不同于上面提到的自增和自减运算符。无疑空合运算符(??由于userDefinedColorName是一个可选类型,我们可以使用空合运算符去判断其值。

  4. Swift语法基础:12 - Swift的比较运算, 三目条件运算, 区间运算, 逻辑运算

    在上面的示例中,该运算符用于确定一个名为colorNametoUse的字符串变量的初始值。因为userDefinedColorName是零,表达userDefinedColorName??defaultColorName返回的值的defaultColorName,或”红色”。好了,这次我们就讲到这里,下次我们继续~~

  5. Swift教程10-运算符与C语言的不同

    =,==这些运算符和其他语言的类似,是比较前后两个值是否相等,或者大小关系比较字符串内容是否相等,使用==即可但是Swift新增了===恒等于,是针对于引用类型,如两个对象之间是否是同一个对象与之对应的是!运算符示例Swift新增的??

  6. Swift运算符

    Swift运算符1.赋值运算符“=”用于将一个变量,常量或表达式的值赋值给另一个变量。算术运算符“+”“-”“*”“/”“%”“++”“–”2.溢出运算符1.溢出加“&+”2.溢出减“&-”3.溢出乘“&*”4溢出除“&/”5溢出求余“&%”3.位运算符4.范围运算符本文内容来自《疯狂讲义》

  7. swift笔记-赋值运算符

    复杂些的运算例如逻辑与运算符&&,或让i值加1的便捷自增运算符++i等。Swift支持大部分标准C语言的运算符,且改进许多特性来减少常规编码错误。当然允许你使用Swift的溢出运算符来实现溢出。本章节只描述了Swift中的基本运算符,高级运算符包含了高级运算符,及如何自定义运算符,及如何进行自定义类型的运算符重载。三元运算符操作三个操作对象,和C语言一样,Swift只有一个三元运算符,就是三目运算符(a?

  8. swift 基础笔记二运算符

  9. swift (二)

    直接上代码:

  10. Swift教程二

    赋值运算符如果赋值的右边是一个多元组,它的元素可以马上被分解多个常量或变量:与C语言和Objective-C不同,Swift的赋值操作并不返回任何值。一元负号运算符一元正号运算符组合赋值运算符比较运算符等于不等于(a!Swift支持三个标准逻辑运算。

随机推荐

  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,所以编译器会报错,现在来一一解决。

返回
顶部