Depuis Swift 3.0, j'ai quelques problèmes avec Strings, en particulier avec la concaténation. Le premier exemple serait ce que j'ai utilisé depuis que j'ai commencé à utiliser Swift pour définir mes chaînes d'URL.
internal let Host: String! = "https://Host.io/"
let urlString = "\(Host)oauth/access_token"
où Host est défini comme au début de la classe. Cela fonctionnait parfaitement jusqu'à Swift 3.0, maintenant que l'impression est la suivante:
Optional("https://Host.io/")oauth/access_token
ce qui est très étrange. Maintenant je dois écrire ceci
let urlString = Host + "oauth/access_token"
Pour obtenir le résultat attendu.
https://Host.io/oauth/access_token
Un autre problème - je suppose que le même problème que je rencontre avec Strings est le suivant. Je concatène à nouveau des chaînes, mais cette fois-ci, j'utilise +
ilke avec urlString - mais cette fois, cela ne fonctionne pas. La ligne de code ressemble à ceci:
self.labelName.text = currentUser.name + " " + String(describing: ageComponents.year)
qui produit malheureusement une chaîne comme celle-ci: "Mon nom est facultatif (26)". Dans ce cas, je n'ai pas de solution String(describing: ageComponents.year)
n'est pas une option et cela ne me permet pas de faire des choses comme String(describing: ageComponents.year) ?? "whatever"
.
Quelqu'un a vu quelque chose de similaire?
Dans Swift 3, toutes les propriétés de la structure native DateComponents
sont des options, contrairement aux contreparties Foundation NSDateComponents
.
var year: Int? { get set }
Vous devez le déballer. Si vous avez spécifié l'unité year
dans ageComponents
, vous pouvez le faire en toute sécurité.