2015-06-01 29 views
-1

我有一個UISlider給出搜索半徑範圍(對於5-x英里,最大x = 100英里),以及我希望能夠在此範圍內獲得一個隨機半徑距離。Swift - arc4random()無法找到接受提供的參數的'%'的重載

@IBAction func sliderMoved(sender: UISlider){ 
    //gives a range (minimum range 5 miles, maximum range 5 - 100 miles) 
    var range = (sender.value*95)+5 
    //gives a random distance in miles from within that range 
    var distance = Int((arc4random()%(range))+1) 
} 

當我嘗試分配「距離」我的錯誤「無法找到該接受提供的參數‘%’過載」。

+3

當然你可以嘗試做一些研究,然後再浪費堆棧溢出帶寬。 – matt

回答

1

問題是sender.value是UISlider.value,它是Floatarc4randomUInt32這是您的主要問題在這裏。

當您只需要內部組件首先匹配時,您所做的是嘗試將整個事件轉換爲Int。因此,獲得了rangearc4random同類型(我已經做了Float在這裏),然後你想=

Int(Float(arc4random()) % range + 1) 

當然,你也可以使用arc4random_uniform像其他評論者說在做鑄件:

arc4random_uniform(UInt32(range)) + 1 

這實際上是,如果你真的不關心你的range(尤其是任何小數部分)的值要好得多。

http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=20282

1

使用arc4random_uniform()

let distance = arc4random_uniform(UInt32(range)) - 1 

arc4random_uniform()會不帶偏見地進行模運算。

相關問題