Swift可选项无需检查

时间:2016-08-18 11:45:19

标签: ios swift

所以我没有想到在Swift中使用1个衬里来跟随语法,这让我疯狂:

if lastProfile == nil || lastProfile.id == profile.id {
        useProfile(profile)
        lastProfile = profile
}

现在看到我可以链接它,但我仍然最终得到2-3个ifs。我可以把它打包出去然后我再次以2-3 ifs结束......是否可以一举做到这一点?

编辑:

我的同事找到了另一种选择(虽然我们同意丑陋):

if !(latestProfile != nil && latestProfile!.voiceId != profile.voiceId) {

}

有比上面更好的方法吗?

3 个答案:

答案 0 :(得分:1)

解决方案仅仅是?

if lastProfile == nil || lastProfile?.id == profile.id {
    print("true")
    lastProfile = profile
}

当lastProfile为nil或者lastProfile和profile具有相同的id时,将打印“true”。否则它什么都不打印。

答案 1 :(得分:0)

如果将lastProfile声明为let lastProfile: Profile? = ...,并且例如将id声明为可选,则可以将其用作:

if let lastProfileId = lastProfile?.id { 
    // lastProfile is not nil and id is not nil
}
else {
    // lastProfile is nil or lastProfile.id is nil
}

它被称为可选链接,你可以在swift docs上阅读它。

答案 2 :(得分:-1)

if let recentProfile = latestProfile where recentProfile.voieId != profile.voiceId {
    useProfile(profile)
    lastProfile = profile
}