2016-05-07 50 views
4

我知道「++」將在3斯威夫特移除並且它必須raplaced:夫特:++已被棄用 - 替換代碼不工作

+ = 1

但在這種代碼,當我改變這個值,我得到錯誤:

override func viewDidLoad() { 
    super.viewDidLoad() 

    imageView.image = images[index++] 
    animateImageView() 
} 

當我插入:

imageView.image = images[index += 1] 

我得到的錯誤。如何更改此代碼?這是圖像轉換代碼(如果我需要,我將整個代碼),並在模擬器中一切正常,但仍然,我想改變它。

+1

'+ ='被稱爲*複合賦值運算符*。不像C,它不會返回一個值。 [Swift Book](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html)特別提到 –

回答

2

移動+= 1了索引,像這樣的:

override func viewDidLoad() { 
    super.viewDidLoad() 
    imageView.image = images[index] 
    index += 1 
    animateImageView() 
} 
+0

謝謝。這麼簡單,我怎麼也沒有把自己弄清楚...... :) 這已經完成了。 –

3

正如dasblinkenlight的解決方案是簡單移動增量是你下標後陣提及。

請注意它之後的原因,因爲這相當於具有後綴增量運算符。如果您要使用++index,那麼您會將index += 1移至下標之前。

關於這裏發生了什麼的一些額外信息,如果你想象操作符作爲函數,你可以看到這裏發生了什麼。

++運營商將有一個實現這樣:

//++ declared as postfix operator before this. 
funC++ (inout num: Int) -> Int { 
    let temp = num 
    num = num + 1 
    return temp 
} 

,其中作爲+=運營商實現這樣:

func += (inout lhs: Int, rhs: Int) { 
    lhs = lhs + rhs 
} 

這裏要注意的重要一點是, ++運算符返回一個Int值,可以在下標wh中使用因爲+=實際上返回void(或不返回任何內容),因此它不能用作下標內的Int

+0

感謝您的時間來幫助我並解釋更多。我是新手,我真的準備好一路走下去。我每天都在練習,喜歡挑戰。 :) 必須說我喜歡斯威夫特,迫不及待要學習更多。再次感謝。 –

相關問題