难以转换为 Swift 3

Difficulties converting to Swift 3

从 Swift 2 转换为 Swift 3 之后(即使在将 edit-> convert -> 转换为当前 swift 语法之后)我遇到了很多错误。特别是:

在我下载此测试版 Xcode 8.0 并转换为 Swift 3

之前,我的项目在 Swift 2 中运行良好,总共显示 90 个错误

这是我犯的转换错误吗?

其中大部分都可以轻松修复,只需点击红色按钮,Xcode 就会为您修复!其他包括:

CGRect

Swift 2:

let frame = CGRectMake(0, 0, 20, 20)

Swift 3:

let frame = CGRect(x: 0, y: 0, width: 20, height: 20)

CGPoint

Swift 2:

let point = CGPointMake(0, 0)

Swift 3:

let point = CGPoint(x: 0, y: 0)

CGSize

Swift 2:

let size = CGSizeMake(20, 20)

Swift 3:

let size = CGSize(width: 20, height: 20)

CGRectGetMidX

Swift 2:

CGRectGetMidX(view)

Swift 3:

view.midX

CGRectGetMidY

Swift 2:

CGRectGetMidY(view)

Swift 3:

view.midY

UIColor

Swift 2:

let color = UIColor.redColor()

Swift 3:

let color = UIColor.red

"NS"

Swift 2:

NSTimer
NSData
NSError

Swift 3:

Timer
Data
Error

用户默认值

Swift 2:

NSUserDefaults.standardUserDefaults().//something

Swift 3:

UserDefaults.standard.//something

并始终记得使用有用的 "Fix all in Scope" 功能,该功能可在编辑器 -> 范围内全部修复

中找到

我正在转换一个项目,但 Xcode 没有帮助我进行任何修复,所以我求助于几个正则表达式搜索和替换:-

CGPointMake\((.*),[ ]*([^\)]+)\)
CGPoint(x:, y:)

CGSizeMake\((.*),[ ]*([^\)]+)\)
CGSize(width:, height:)

请注意,他们不知道嵌套括号,但可能足以满足 90% 的情况。