这个问题在这里已经有了答案:
Swift 3 incorrect string interpolation with implicitly unwrapped Optionals
(1 个回答)
4年前关闭。
从 Swift 3.0 开始,我在字符串方面遇到了一些麻烦,尤其是在连接方面。第一个示例是我开始使用 Swift 定义我的 url 字符串后使用的示例。
internal let host: String! = "https://host.io/"
let urlString = "\(host)oauth/access_token"
其中 host 定义为类的开头。这在 Swift 3.0 之前一直有效,现在打印出来如下:
Optional("https://host.io/")oauth/access_token
这很奇怪。现在我必须写这个
let urlString = host + "oauth/access_token"
以获得预期的输出。
https://host.io/oauth/access_token
另一个 - 我想我在使用字符串时遇到的类似问题是这个。我再次连接字符串,但这次我使用
+
ilke 与 urlString - 但这次不起作用。代码行如下所示:self.labelName.text = currentUser.name + " " + String(describing: ageComponents.year)
不幸的是,它会产生这样的字符串:“My Name Optional(26)”。在这种情况下,我没有解决方案
String(describing: ageComponents.year)
不是可选的,它不允许我做 String(describing: ageComponents.year) ?? "whatever"
之类的事情有人见过类似的吗?
最佳答案
在 Swift 3 中, native 结构的所有属性 DateComponents
是与基金会不同的可选项目 NSDateComponents
同行。
var year: Int? { get set }
你需要打开它。如果您指定了单位
year
在 ageComponents
你可以安全地做到这一点。
关于string - Swift 3.0 字符串连接留下 "Optional",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39577658/