迁移到惯用的Swift 2的清单(AKA在哪里是Swift 2过渡指南)?

And*_*ing 8 xcode ios swift swift2

我一直在尝试找到Swift 2的转换指南,特别是开发人员在将Swift 1/1.2代码库迁移到Swift 2时应该注意的事情.显然你在Xcode中有迁移助手,但这只能真正涵盖了驴子工作,而不是需要更多智能思想的东西.

基于我在Swift 2上找到的资源,我整理了以下清单:

  • try/catch/throw错误处理 - 用于可恢复的错误; 相应地修改错误处理代码.特别是,检查代理的所有使用NSError和回调以报告可恢复的错误.
  • 使用enums符合来ErrorType定义您自己有意义的错误.
  • 使用#available访问较新的平台API - 检查针对应用程序部署目标的API使用并相应地进行修改
  • 协议扩展 - 尽可能多地将代码移入这些代码以帮助重用.特别是将全局函数重构为协议扩展.
  • 可空性注释和泛型 - 删除多余的可选绑定和类型转换
  • 使用do { }早期控制范围,并没有大的资源
  • 移动旧do { ... } while循环repeat { }(以消除歧义并提高可读性)
  • 用于guard提前返回并避免过度压痕
  • 使用defer用于清理代码如关闭文件等.
  • 使用选项集而不是将值合并在一起(例如viewAnimationOptions = [.Repeat, .CurveEaseIn, .TransitionCurlUp])
  • 查看public之前仅需要支持测试的访问者说明符.使用@testableimport MyApp替代.
  • 将单个switch语句语句移动到新语句if case .MyEnumCase(let value) = bar() where value != 42 { doThing(value) }
  • 使用"for ... in"过滤来清理for包含if过滤语句的循环,例如for value in mySequence where value != "" { }
  • 对C函数指针的本机支持 - 提供使用闭包或全局函数(在执行此操作时不捕获本地上下文)
  • 修复任何新的let/var警告
  • 修复任何未使用的变量警告
  • 在调用super.init之前,可用的初始值设定项现在可以返回nil - 删除任何以前需要的解决方法.在返回nil之前,指定的初始化程序仍然必须初始化所有存储的属性.

资料来源:

https://developer.apple.com/swift/blog/?id=29

https://developer.apple.com/swift/

https://developer.apple.com/library/prerelease/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/xc7_release_notes.html#//apple_ref/doc/uid/TP40001051-CH5-SW1

https://developer.apple.com/videos/wwdc/2015/?id=106

http://www.raywenderlich.com/108522/whats-new-in-swift-2

我错过了什么?

部分问题在于Swift 2继续在WWDC之后发展.所以即使今年的WWDC视频已经可能已经过时,或者至少不是整个故事.

Max*_*dge 1

不幸的是,目前苹果还没有官方的“过渡指南”。

每当 Apple 发布新版本的 Swift 时,都会更新Swift 编程语言 (Swift 2),因此它是有关 Swift 2(或更高版本)最新信息的最佳来源之一。整个语言有大量的解释和示例代码,而不仅仅是更改,但这绝对是您现在正在寻找的信息的最佳来源之一。