Une révision mineure de Swift est maintenant livrée avec XCode 8.3, il s'agit de la version 3.1

Cette nouvelle version ajoute plusieurs outils intéressants pour les développeurs sans imposer de changement de syntaxe. Voici les nouveautés essentielles :

Conversions numériques exactes

Le Swift est assez strict sur les types et leur manipulations, nous avons donc très souvent besoin de convertir nos variables d'un type à l'autre. Dans certains cas il peut y avoir une perte de données : par exemple la conversion du réel 13.37 en entier donnera 13 et les .37 seront perdus. Avec la version 3.1, tous les types numériques bénéficient d'un nouveau constructeur optionnel permettant de refuser la perte de donnée.

Exemple :

let age:Int? = Int(exactly: 25.0)

Dans ce cas, la constante age sera un optionnel avec la valeur 25 à l'intérieur.

let age:Int? = Int(exactly: 25.15)

Dans ce cas, la constante age sera un optionnel vide.

Tous les types numériques possèdent ce constructeur optionnel, pas seulement les entiers.

Vérification de la version de Swift

On pouvait déjà vérifier la version de la plateforme (iOS 10, iOS 9, etc.) avec @available, mais il est maintenant possible de le faire pour la version de Swift.

Par exemple :

@available(swift 3.1) 
 func convertirDouble(number: Double) -> Int? { 
 return Int(exactly: number) 
 } 
 @available(swift, introduced: 3.0, obsoleted: 3.1) 
 func convertirDouble(number: Double) -> Int { 
 return Int(number) 
 }

Pour plus d'informations sur les nouveautés de cette version, voici le lien vers l'annonce officielle : https://swift.org/blog/swift-3-1-released/

Happy coding!