web-dev-qa-db-fra.com

Difficultés à convertir en Swift 3

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:

this

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?

48
niravdesai21

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
187
Pranav Wadhwa

Et souvenez-vous toujours d'utiliser la fonction utile "Tout corriger dans l'étendue" qui se trouve dans Editeur -> Tout corriger dans l'étendue

12
Sierra101

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.

1
Echelon