Nach dem Konvertieren von Swift 2 zu Swift 3 (auch nach dem Konvertieren von edit-> convert -> to current Swift syntax) Ich erhalte viele Fehler, insbesondere:
Mir werden insgesamt 90 Fehler für mein Projekt angezeigt, die in Swift 2 einwandfrei funktionierten, bevor ich diesen Beta Xcode 8.0 heruntergeladen und in Swift 3 konvertiert habe
Ist das ein Konvertierungsfehler, den ich mache?
Bei den meisten handelt es sich um einfache Korrekturen, indem Sie einfach auf den roten Knopf tippen und Xcode für Sie reparieren lassen! Andere sind:
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
IColor
Swift 2:
let color = UIColor.redColor()
Swift 3:
let color = UIColor.red
"NS"
Swift 2:
NSTimer
NSData
NSError
Swift 3:
Timer
Data
Error
serDefaults
Swift 2:
NSUserDefaults.standardUserDefaults().//something
Swift 3:
UserDefaults.standard.//something
Und denken Sie immer daran, die hilfreiche Funktion "Fix all in Scope" zu verwenden, die Sie unter Editor -> Fix all in Scope finden
Ich habe ein Projekt konvertiert und Xcode hat mir bei der Behebung von Problemen nicht geholfen. Deshalb habe ich ein paar reguläre Suchen und Ersetzen-Aktionen durchgeführt:
CGPointMake\((.*),[ ]*([^\)]+)\)
CGPoint(x:$1, y:$2)
CGSizeMake\((.*),[ ]*([^\)]+)\)
CGSize(width:$1, height:$2)
Beachten Sie, dass sie keine geschachtelten Klammern kennen, aber wahrscheinlich in 90% der Fälle gut genug sind.