Swift 2からSwift 3に変換した後(edit-> convert->を現在のSwift構文に変換した後でも)、多くのエラーが発生します。特に:
このベータ版のXcode 8.0をダウンロードしてSwift 3に変換する前に、Swift 2で正常に動作していたプロジェクトで合計90個のエラーが表示されます。
これは私が犯している変換ミスですか?
それらのほとんどは、赤いボタンをタップするだけで簡単に修正でき、Xcodeで修正できます!その他には以下が含まれます:
CGRect
スイフト2:
let frame = CGRectMake(0, 0, 20, 20)
スウィフト3:
let frame = CGRect(x: 0, y: 0, width: 20, height: 20)
CGPoint
スイフト2:
let point = CGPointMake(0, 0)
スウィフト3:
let point = CGPoint(x: 0, y: 0)
CGSize
スイフト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
IColor
スイフト2:
let color = UIColor.redColor()
スウィフト3:
let color = UIColor.red
"NS"
スイフト2:
NSTimer
NSData
NSError
スウィフト3:
Timer
Data
Error
serDefaults
スイフト2:
NSUserDefaults.standardUserDefaults().//something
スウィフト3:
UserDefaults.standard.//something
そして、エディターで見つけることができる便利な「スコープ内のすべてを修正」機能を使用することを常に忘れないでください->スコープ内のすべてを修正
私はプロジェクトを変換していましたが、Xcodeは修正を助けてくれませんでしたので、いくつかの正規表現の検索と置換に頼りました:
CGPointMake\((.*),[ ]*([^\)]+)\)
CGPoint(x:$1, y:$2)
CGSizeMake\((.*),[ ]*([^\)]+)\)
CGSize(width:$1, height:$2)
ネストされた括弧を認識していないことに注意してください。ただし、おそらく90%のケースで十分です。