Closed. This question is off-topic。它目前不接受答案。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
去年关门了。
我对斯威夫特还不太熟悉,但我什么都试过了,没法用。
var itemValue: String!
var itemURL: URL!

override func viewDidLoad() {
    super.viewDidLoad()

    print("itemValue is", itemValue!)
    guard let itemURL = URL(string: itemValue) else {
        return
    }

itemURL没有得到值,即使我已经验证itemValue字符串设置正确(在以前的vc中,准备segue)。

最佳答案

当您编写guard let itemURL = URL(string: itemValue)时,您将创建一个名为itemURL的新本地常量,它与具有相同名称的全局变量无关。此外,这个新的局部常量与全局变量的类型不同。全局变量是隐式展开的可选变量,因此这是可选的,但局部常量不是可选的。
这就是为什么你说itemURL没有得到一个值:你希望名为itemURL的全局变量得到一个值,但是你只将一个值设置为具有相同名称的本地常量。这两个相似的标识符不会将其内容存储在同一个内存位置。

10-08 08:04