关于swift可选型的问题 if - let。

有多个可选型,举个例子
if let titleStr = title
{

/....

}
if let nameStr = name
{

/....

}
if let ageStr = age
{

/....

}
这样三个有没有简便的写法,比如用一个if let 搞定,我记得之前看到过有方法的。像上面这样写台恶心了。。代码强迫症,求大神解答。。

阅读 4k
4 个回答

不知道这三个if里面的statement逻辑加一起是OR 还是 AND, 假设是 AND, 下面是测试代码:

import Foundation

func checkIfSet( parmTitle:String!, parmName:String!)
{
    if let title=parmTitle, name=parmName {
        NSLog("yes, all values ok: %@, %@", title, name)
    } else {
        NSLog("error value setting if parameter's optional")
    }
}

var optTitle:String?
var optName:String?
checkIfSet(optTitle, parmName: optName)
optTitle = "CEO"
optName = "Honey Swift"
checkIfSet(optTitle, parmName: optName)

返回结果是:

2016-03-24 20:54:43.845 TestIfSet[456:7976] error value setting if parameter's optional
2016-03-24 20:54:43.847 TestIfSet[456:7976] yes, all values ok: CEO, Honey Swift
Program ended with exit code: 0

if let可选绑定是处理可选类型的一种办法,觉得麻烦也可以用多个问号的可选链解决多级可选

也可以在使用前用 guard 语句过滤一下。

var v1: String? = "v1"
var v2: String? = "v2"
var v3: String? = "v3"

if let v11 = v1 ,v22 = v2 , v33 = v3{
    print(v11,v22,v33)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题