48

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

这个

在我下载此 beta Xcode 8.0 并转换为 Swift 3 之前,我的项目总共显示 90 个错误,这些错误在 Swift 2 中运行良好

这是我犯的转换错误吗?

4

3 回答 3

187

它们中的大多数都很容易修复,只需点击红色按钮,然后让 Xcode 为您修复它!其他包括:

CG矩形

斯威夫特 2:

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

斯威夫特 3:

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

CG点

斯威夫特 2:

let point = CGPointMake(0, 0)

斯威夫特 3:

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

CGS尺寸

斯威夫特 2:

let size = CGSizeMake(20, 20)

斯威夫特 3:

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

CGRectGetMidX

斯威夫特 2:

CGRectGetMidX(view)

斯威夫特 3:

view.midX

CGRectGetMidY

斯威夫特 2:

CGRectGetMidY(view)

斯威夫特 3:

view.midY

UIColor

斯威夫特 2:

let color = UIColor.redColor()

斯威夫特 3:

let color = UIColor.red

“NS”

斯威夫特 2:

NSTimer
NSData
NSError

斯威夫特 3:

Timer
Data
Error

用户默认值

斯威夫特 2:

NSUserDefaults.standardUserDefaults().//something

斯威夫特 3:

UserDefaults.standard.//something
于 2016-06-21T16:57:12.890 回答
12

并且永远记得使用有用的“Fix all in Scope”功能,它可以在 Editor -> Fix all in Scope 中找到

于 2016-10-12T10:11:53.537 回答
1

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

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

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

请注意,他们不知道嵌套括号,但对于 90% 的情况来说可能已经足够了。

于 2017-01-03T12:06:32.020 回答