Swift 4.2语法更改-Swift类型推断发生了什么?

时间:2018-06-30 04:34:22

标签: ios swift xcode10

我正在使用Swift 4.2运行Xcode 10 beta。 Xcode希望将带有Swift 4.1代码的Xcode 9.4.1转换为Swift 4.2语法。更改全部为UIView.animate(... options: ...)

我使用了.curveEaseIn之类的选项,该选项以前效果不错,但它想将其更改为UIView.AnimationOptions.curveEaseIn

Swift的ENUM类型推断发生了什么?

2 个答案:

答案 0 :(得分:6)

在Swift 4.1中是show。因此,迁移者已将您的class A(object): def __method(self): print("hello") def show(self): self.__method() class B(A): def __method(self): print("goodbye") def show(self): self.__method() A().show() ## print out hello B().show() ## print out goodbye 检测为UIViewAnimationOptions.curveEaseIn,并试图将其转换为.curveEaseIn

似乎当前的迁移者不喜欢点引导的符号。

您可以将所有出现的UIViewAnimationOptions.curveEaseIn手动转换为UIView.AnimationOptions.curveEaseIn,并且在适当的情况下可以使用Swift类型推断。

您可能要写feature request来建议对迁移器进行改进。


(添加) 尽管我尚未测试,但似乎Xcode 10 beta 3已解决了此问题。

Xcode 10 beta 3 Release Notes

答案 1 :(得分:0)

AnimationOptions是UIView下现在Swift 4.2中的一个枚举

您还可以查看此git repo,其中包含语法更改列表。 请随时为您在项目中遇到的更改做出贡献。

https://github.com/alexliubj/Swift-Migration-4.2