2016-10-08 40 views
0

我想減去一些CGFloats,這樣定義的:減法CGFloats的,多義性錯誤斯威夫特3

var panelHeight:CGFloat! 

當我嘗試做(screenHeight - panelHeight - tabBarHeight)在下面的代碼,我得到一個錯誤,說我不能在CGFloat和CGFloat!上應用二元運算符,這沒有多大意義,因爲所有三個浮點數都用!聲明。如果我用tabBarHeight!替換tabBarHeight,那麼會出現一個名爲「對成員的模糊引用 - 」的錯誤。

collisionBehavior.addBoundaryWithIdentifier("upperBoundary" as NSCopying, fromPoint: CGPoint(x: 0, y: screenHeight - panelHeight - tabBarHeight), toPoint: CGPoint(x: boundaryX, y: screenHeight - panelHeight - tabBarHeight)) 
+0

開始 - panelHeight - tabBarHeight'給一個變量。表達式的複雜性可能會導致編譯器顯示無效錯誤。 – Sulthan

+0

我試過了,但錯誤是一樣的 – Alessandro

+0

我認爲這是Swift的一個bug,最好向Apple或swift.org發送一個錯誤報告。一個簡單的解決方法 - '0 + screenHeight - panelHeight - tabBarHeight'。 – OOPer

回答

2

我找不到錯誤報告,但這是一個已知的錯誤。一種解決方法是在第一或第二可變流延到非可選的,如下所示:通過提取表達式`screenHeight

(screenHeight as CGFloat) - panelHeight - tabBarHeight