swift,未解析标识符的使用

swift,未解析标识符的使用,swift,swift3,Swift,Swift3,我有一个swift密码 if(pendingComboOperation == nil){ if(accumulator != nil){ let descPart2 = symbol + String(accumulator!) } else { let descPart2 = "" } } else { let descPart2 = symbol + addBrackets(to: pendingComboOpera

我有一个swift密码

if(pendingComboOperation == nil){
    if(accumulator != nil){
        let descPart2 = symbol + String(accumulator!)
    }
    else {
        let descPart2 = ""
    }

}
else {
    let descPart2 = symbol + addBrackets(to: pendingComboOperation!.descPart2)
}

pendingComboOperation = PendingComboOperation(descPart1: description!, descPart2: descPart2)
并且有一个错误:

使用未解析标识符“descPart2”


为什么??我该如何修复它呢?

您不能在
if
else
语句中声明变量。解决方案是给
descPart2
一个默认值:

var descPart2: String

if(pendingComboOperation == nil){
    if(accumulator != nil){
        descPart2 = symbol + String(accumulator!)
    } else {
        descPart2 = ""
    }

} else {
    descPart2 = symbol + addBrackets(to: pendingComboOperation!.descPart2)
}

pendingComboOperation = PendingComboOperation(descPart1: description!, descPart2: descPart2)

如果在块内声明变量,则在块外将不可用。对您来说,这意味着:在if语句之前声明
descPart2
,然后在内部使用它。@creator0r您可以接受我的答案(单击复选标记)如果它对您有效。只要声明没有初始值的变量就足够了。
让descPart2:String
如果所有代码路径在使用前都指定了一个值。@MartinR感谢您的反馈。我将更新我的帖子。不要与
nil
进行比较,只会强制展开