Swift 中的双问号 ??

swift中有个双问号操作符(??),可以用来快速对nil进行条件判断,今天来补充下双问号的用法,对于不期望某个optional值为nil时func返回nil 或者 因为其值为nil而停止了后续业务的情况下,我们可以用"??"在optionalValue为nil时做赋值保险操作(“??”操作后返回值为非optional)

用法:newValue = optionalValue ?? value

若optionalValue非nil时,newValue的值为optionalValue的值,若optionalValue为nil时,newValue的值为value的值

简单明了直接上例子:self.objectForKey(key)为nil时,object的值为0

func validIntValueForKey(key: String) -> Int {

let object = self.objectForKey(key) ?? Int(0)

//do something

}

例子:赋default值

versionNameLabel.text = NSBundle.mainBundle().objectForInfoDictionaryKey(kCFBundleVersionKey as String) as? String ?? "版本号读取失败"

例子:若为nil 赋值为String数组

[plain]view plaincopy

let businessNameList = user.businessList?.flatMap{ $0.businessName } ?? ["无场馆"]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容