2015-04-22 36 views
14

因此,我在我的Xcode項目中使用了這個小算法,它不再有效 - 它告訴我,無論我嘗試什麼,我都無法將數字添加到另一個數字。對運算符「+」的模糊使用

注:
一切都可以正常使用之前,我改變了我的目標的iOS 7.0
我不知道這與它有什麼關係,但即使我將它切換回iOS 8它給了我一個錯誤,我的構建失敗。

代碼:

var delayCounter = 100000 

for loop in 0...loopNumber { 
    let redDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter)/30000 

    let blueDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter)/30000 

    let yellowDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter)/30000 

    let greenDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter)/30000 
} 

回答

17

問題是delayCounterInt,但arc4random_uniform返回UInt32。你要麼需要聲明delayCounterUInt32

var delayCounter: UInt32 = 100000 
let redDelay = NSTimeInterval(arc4random_uniform(100000) + delayCounter)/30000 

arc4random結果轉換爲Int

var delayCounter:Int = 100000 
let redDelay = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter)/30000 
+0

謝謝你的幫助! –

4

arc4random_uniform返回UInt32的函數,但是delayCounterInt類型。 Swift中沒有運營商定義+,它以UInt32Int爲參數。因此斯威夫特不知道如何處理+運營商 - 它是ambiguous

因此你必須投的UInt32Int首先,通過使用Int現有的初始化,需要一個UInt32作爲它的參數:

let redDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter)/30000 
let blueDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter)/30000 
let yellowDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter)/30000 
let greenDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter)/30000 

一種不同的方法將申報delayCounter爲一個UInt32

let delayCounter: UInt32 = 100000 
1

arc4random_uniform函數返回UInt32。你需要將其轉換爲Int

函數聲明
func arc4random_uniform(_: UInt32) -> UInt32

解決方案:
讓redDelay:NSTimeInterval = NSTimeInterval(INT(arc4random_uniform(100000))+ delayCounter)/ 30000

+0

謝謝您的幫助! –