web-dev-qa-db-ja.com

Swift 3への変換の問題

Swift 2からSwift 3に変換した後(edit-> convert->を現在のSwift構文に変換した後でも)、多くのエラーが発生します。特に:

this

このベータ版のXcode 8.0をダウンロードしてSwift 3に変換する前に、Swift 2で正常に動作していたプロジェクトで合計90個のエラーが表示されます。

これは私が犯している変換ミスですか?

48
niravdesai21

それらのほとんどは、赤いボタンをタップするだけで簡単に修正でき、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
187
Pranav Wadhwa

そして、エディターで見つけることができる便利な「スコープ内のすべてを修正」機能を使用することを常に忘れないでください->スコープ内のすべてを修正

12
Sierra101

私はプロジェクトを変換していましたが、Xcodeは修正を助けてくれませんでしたので、いくつかの正規表現の検索と置換に頼りました:

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

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

ネストされた括弧を認識していないことに注意してください。ただし、おそらく90%のケースで十分です。

1
Echelon