2015-05-08 40 views
0

我想創建一個if語句或一個switch語句並創建一個要使用的變量。在Swift中使用未解析的標識符

if (randomIcon == 1) { 
     var coolCircle = TapCircleIcon(typeOfCircle: CircleType.Circle1) 
    } 

    addChild(coolCircle) 

我得到的問題是coolCircle的未解析標識符。這是預料之中的事,但我不確定什麼是迅速的平等。

在obj-c我可能會設置指針爲零,然後創建它,如果值存在。我如何得到這個在Swift中正確解析。我應該如何將變量設置爲TapCircleIcon類,但是直到if/switch語句才創建對象?

回答

4

簡單:

if (randomIcon == 1) { 
    let coolCircle = TapCircleIcon(typeOfCircle: CircleType.Circle1) 
    addChild(coolCircle) 
} 

更靈活:

let coolCircle: TapCircleIcon? 
if (randomIcon == 1) { 
    coolCircle = TapCircleIcon(typeOfCircle: CircleType.Circle1) 
} 
else { 
    coolCircle = nil // or something else 
} 

if let coolCircle = coolCircle { // not nil 
    addChild(coolCircle) 
} 
+0

在第二個例子中,你可以將代碼從else塊移到第一行。 –

+0

@SviatoslavYakymiv請進一步解釋。你能用你的建議來編輯答案嗎? – StuartM

+0

@SviatoslavYakymiv不,你不能這樣做。 'let'意味着變量只能被賦值一次。 – fluidsonic

1

由於其他答案不解釋任何東西:

您聲明變量coolCircleif塊這使得內部可用到if區塊只有。這意味着你將無法再在戶外使用它。
我會和@ fluidonic的答案一起解決問題。

希望能幫助你理解:)

+0

感謝您的信息,我投票了 – StuartM

相關問題