2016-04-13 66 views
-1
var viewSize = Double(viewersView.frame.size.width) 
    var itemSize = Double(boxSize + viewerHorizontalPadding) 
    self.maxViewers = floor(viewSize/itemSize) //should be Int 

我得到一個錯誤,指出:不能使用「地板」,在迅速

無「地板」候選人產生預期的語境結果類型「內部」

我進口達爾文。

回答

4

floor需要一個Double並返回另一個Double。如果你想要它是一個Int(匹配self.maxViewers,你必須明確地轉換它:Int(floor(viewSize/itemSize))

+5

或者只是'Int(viewSize/itemSize)'。 –

+0

在練習中工作,但我檢查了頭文件,它doesn不要說它截斷(只是「近似」) – jtbandes

+3

@MartinR我很迂腐,但這不完全相同 - 'Int(..)'將截斷,而不是像'floor'一樣向下舍入,即floor( - 1.1)'會是'2.0',但是'Int(-1.1)'會是'-1'。此外,它是不安全的;你可以有比整數更大的浮點數,例如'let f = Float(Int64.max)+ 1'好,但'讓我= Int(f)'現在拋出一個錯誤:|(雖然,答案也有這個問題) – deanWombourne