我是iOS开发的新手。我正在通过观看视频教程来做这个项目,他们使用的是早期版本的Swift,但我使用的是Swift。
我遇到了这个问题。用于计算时,将打开两个可选整数。但是,当文本被赋予标签时,它不会被打开。
当文本被提供给标签时,我试图再次打开它们并且它有效。为什么表现得很奇怪?
var leftNumber: Int!
var rightNumber: Int!
func generateProblem() {
leftNumber = generateRandomNumber()
rightNumber = generateRandomNumber()
// The problem is here
problemLabel.text = "\(leftNumber) x \(rightNumber)"
}
func generateRandomNumber() -> Int {
return Int(arc4random_uniform(UInt32(9))) + 1
}
模拟器的截图:
答案 0 :(得分:2)
在Swift 3中,隐式解包的可选项与可选项相同,只是它会隐式解包 require 它的上下文。例如,如果您有func foo(i: Int)
,则可以编写foo(i: leftNumber)
,编译器会为您执行解包操作。
字符串插值不是需要展开的上下文。由于你可以在那里使用一个可选项,Swift更喜欢可选的情况,不会为你打开包装。
您在网上找到的教程可能尚未针对Swift 3进行更新,或者可能存在误解。