Après la conversion de Swift 2 en Swift 3 (même après la conversion de edit-> convert -> en syntaxe swift actuelle), je reçois de nombreuses erreurs. Notamment:
Je suis montré au total 90 erreurs pour mon projet qui fonctionnait bien dans Swift 2 avant que j’ai téléchargé cette version bêta Xcode 8.0 et convertie en Swift 3
Est-ce une erreur de conversion que je commets?
La plupart d’entre eux sont des solutions simples, en appuyant simplement sur le bouton rouge, et le fait d’avoir Xcode le répare pour vous! D’autres incluent:
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
UIColor
Swift 2:
let color = UIColor.redColor()
Swift 3:
let color = UIColor.red
“NS”
Swift 2:
NSTimer NSData NSError
Swift 3:
Timer Data Error
UserDefaults
Swift 2:
NSUserDefaults.standardUserDefaults().//something
Swift 3:
UserDefaults.standard.//something
Et souvenez-vous toujours d’utiliser la fonction utile “Corriger tout ce qui concerne” qui se trouve dans l’éditeur -> Réparer tout
Je convertissais un projet et Xcode ne m’aidait pas pour les corrections, alors j’ai eu recours à quelques recherches et remplacements de regex: –
CGPointMake\((.*),[ ]*([^\)]+)\) CGPoint(x:$1, y:$2) CGSizeMake\((.*),[ ]*([^\)]+)\) CGSize(width:$1, height:$2)
Notez qu’ils ne connaissent pas les parenthèses nestedes, mais probablement assez bonnes pour 90% des cas.