Swift3.0中遇到的問題

1.0 Expected expression

我這里是因為三目運算符的格式寫錯了,所以報錯。改為:只要將?號前后各加一個空格即可

2.0? '%'? is unavailable: Use truncatingRemainder instead


這是因為我直接浮點類型對浮點類型取模,但是在Swift3.0中是不行的。改為:通過truncatingRemainder 函數去取模

3.0? Binary operator '%' cannot be applied to operands of type 'Int' and 'Double'

這是因為 Int類型 的 number不能直接通過運算符%去取模,改為:先將Int類型 的number轉為CGFloat后,再通過 truncatingRemainder 函數去取模

3.1? Binary operator '/' cannot be applied to operands of type 'Int' and 'Double'


這是因為我直接用Int類型的number通過運算符 /? 去取余了,不能直接去這樣操作。改為:直接將Int類型的number轉為CGFloat 浮點類型后再次取余

4.? Cannot assign value of type '()' to tyoe 'Int'

出現上面的報錯信息是因為我在上面的賦值語句中連續賦值,只需要將其中的等號去除即可。因為在Swift中禁止連續賦值,而且賦值操作是并不返回任何值的,這個特性防止程序員將 c == 6的判斷誤寫成c = 6,減少了常規的編碼錯誤。

通過上面的 2? 3 和 4 中的報錯信息不難看出Swift是一門強語言,至少相對OC來說。

5.0 獲取屏幕的寬高度是 UIScreen.main.bounds.width 和 UIScreen.main.bounds.height? 不能寫成UIScreen.init().bounds.width 和 UIScreen.init().bounds.height ,否則得到的永遠都是0, 因為UIScreen是一個單例,只能通過.main去獲取。

5.0 AnyClass的錯誤使用(沒有去除掉命名空間,導致加載控制器失敗,從而導致奔潰)

修改后的截圖

6.0 'weak' may only be applied to class? and class-bound protocol types, not '你的代理方法名字'

這是因為我自定義的代理沒有繼承NSObject的協議,改成如下既可以:

持續更新中...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容