Après la conversion de Swift 2 en Swift 3 (même après la conversion de edit-> convert -> à la syntaxe actuelle Swift _), je reçois de nombreuses erreurs. Notamment:
On affiche un total de 90 erreurs pour mon projet qui fonctionnait correctement sous Swift 2 avant de télécharger cette version bêta de Xcode 8.0 et de le convertir en Swift 3.
Est-ce une erreur de conversion que je fais?
La plupart d’entre elles sont des solutions faciles, il suffit de cliquer sur le bouton rouge pour que Xcode répare le problème pour vous! Parmi les autres:
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
Et souvenez-vous toujours d'utiliser la fonction utile "Tout corriger dans l'étendue" qui se trouve dans Editeur -> Tout corriger dans l'étendue
J'étais en train de convertir un projet et Xcode ne m'aidait pas avec les correctifs. J'ai donc eu recours à deux méthodes de recherche et de remplacement des expressions rationnelles: -
CGPointMake\((.*),[ ]*([^\)]+)\)
CGPoint(x:$1, y:$2)
CGSizeMake\((.*),[ ]*([^\)]+)\)
CGSize(width:$1, height:$2)
Notez qu'ils ne connaissent pas les parenthèses imbriquées, mais qu'ils sont probablement suffisants pour 90% des cas.