Seit Swift 3.0 habe ich einige Probleme mit Strings, insbesondere mit Verkettung. Das erste Beispiel wäre, was ich verwendet habe, seit ich Swift zum Definieren meiner URL-Strings verwendet habe.
internal let Host: String! = "https://Host.io/"
let urlString = "\(Host)oauth/access_token"
wobei Host als am Beginn der Klasse definiert ist. Dies funktionierte bis Swift 3.0 einwandfrei. Jetzt werden folgende Ausdrucke ausgegeben:
Optional("https://Host.io/")oauth/access_token
das ist sehr seltsam. Jetzt muss ich das schreiben
let urlString = Host + "oauth/access_token"
Die erwartete Ausgabe erhalten.
https://Host.io/oauth/access_token
Ein anderes Problem - ich denke, ein ähnliches Problem, das ich mit Strings habe, ist folgendes. Ich verkette wieder Strings, aber diesmal verwende ich +
ilke mit urlString - aber diesmal funktioniert das nicht. Codezeile sieht so aus:
self.labelName.text = currentUser.name + " " + String(describing: ageComponents.year)
was leider zu einem String wie diesem führt: "My Name Optional (26)". In diesem Fall habe ich keine Lösung, String(describing: ageComponents.year)
ist keine Option und erlaubt mir nicht, Dinge wie String(describing: ageComponents.year) ?? "whatever"
zu tun.
Hat jemand etwas Ähnliches gesehen?
In Swift 3 sind alle Eigenschaften der nativen Struktur DateComponents
im Gegensatz zu den Gegenstücken der Foundation NSDateComponents
optional.
var year: Int? { get set }
Sie müssen es auspacken. Wenn Sie die Einheit year
in ageComponents
angegeben haben, können Sie dies sicher tun.