从Swift 3.0开始,我在字符串方面遇到了一些麻烦,特别是在拼接方面。第一个例子是我自从开始使用Swift定义我的URL字符串以来一直在使用的方法。
internal let host: String! = "https://host.io/"
let urlString = "\(host)oauth/access_token"
其中主机被定义为在类的开头。这在Swift 3.0之前完美运行,但现在打印输出如下:
Optional("https://host.io/")oauth/access_token
这很奇怪。现在我必须写这个。
let urlString = host + "oauth/access_token"
为了获得预期的输出。
https://host.io/oauth/access_token
还有一个问题,我想与字符串相关。我再次连接字符串,但这次我使用的是+
,就像与urlString一样 - 但这次不起作用。代码行看起来像这样:
self.labelName.text = currentUser.name + " " + String(describing: ageComponents.year)
很不幸,代码生成的字符串是这样的:"My Name Optional(26)"。在这种情况下,我没有解决方案。
String(describing: ageComponents.year)
不是可选类型,因此无法进行类似于 String(describing: ageComponents.year) ?? "whatever"
的操作。有人遇到过类似的问题吗?
ageComponents.year
是否是(隐式解包的)可选项? - Hamish