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的協議,改成如下既可以: