Swift 3:在将其设置为Label之前无法自动解包

时间:2016-09-21 03:55:50

标签: ios swift swift3 xcode8

我是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
}

模拟器的截图:

screen

1 个答案:

答案 0 :(得分:2)

在Swift 3中,隐式解包的可选项与可选项相同,只是它会隐式解包 require 它的上下文。例如,如果您有func foo(i: Int),则可以编写foo(i: leftNumber),编译器会为您执行解包操作。

字符串插值不是需要展开的上下文。由于你可以在那里使用一个可选项,Swift更喜欢可选的情况,不会为你打开包装。

您在网上找到的教程可能尚未针对Swift 3进行更新,或者可能存在误解。