在从 Swift 2 转换为 Swift 3 之后(即使在将 edit-> convert -> 转换为当前的 swift 语法之后),我遇到了很多错误。尤其:
在我下载此 beta Xcode 8.0 并转换为 Swift 3 之前,我的项目总共显示 90 个错误,这些错误在 Swift 2 中运行良好
这是我犯的转换错误吗?
它们中的大多数都很容易修复,只需点击红色按钮,然后让 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
并且永远记得使用有用的“Fix all in Scope”功能,它可以在 Editor -> Fix all in Scope 中找到
我正在转换一个项目,而 Xcode 没有帮助我进行任何修复,所以我求助于几个正则表达式搜索和替换:-
CGPointMake\((.*),[ ]*([^\)]+)\)
CGPoint(x:$1, y:$2)
CGSizeMake\((.*),[ ]*([^\)]+)\)
CGSize(width:$1, height:$2)
请注意,他们不知道嵌套括号,但对于 90% 的情况来说可能已经足够了。