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的协议,改成如下既可以:
网友评论