gpt4 book ai didi

ios - Swift:在更新标签时展开可选值时意外发现 nil

转载 作者:行者123 更新时间:2023-11-28 08:44:36 26 4
gpt4 key购买 nike

我在 Model View Controller 中有一个 UILabel。我想要做的是在我的代码的某个点上更改它的文本。问题是它在第一点工作并在第二点停止工作,抛出以下错误:

unexpectedly found nil while unwrapping an Optional value

我发现了关于同一错误的其他问题,但这些解决方案对我不起作用。也许我在 optional 上做错了什么。

这是我的 Model View Controller 的代码:

import UIKit

class CheckInViewController: UIViewController {

@IBOutlet weak var test: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
}

override func viewDidAppear(animated: Bool) {
print("Appeared")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("scanViewController") as! ScanViewController

test.text = "Here it works" // FIRST POINT WORKS AND CHANGES THE LABEL

if let qrCode = vc.qrCode{ // vc.qrCode IS AN OPTIONAL

qrRead(qrCode)
vc.qrCode = nil
}


}

func qrRead(qrCode: String) {

print(qrCode)

test.text = "Here it doesnt work" // HERE IT STOPS WORKING
}

最佳答案

您正在设置 vc.qrCodenil将其传递给 func qrRead(qrCode: String) 后直接功能。

删除此行:vc.qrCode = nil并检查错误是否仍然存在。

如果没有,正如我怀疑的那样,将 var 清零到别处。

请记住使用 if let,您实际上访问的是底层实例,而不是副本。

因此,当您将 vc.qrCode 设置为 nil 时,您也将 qrCode 设置为 nil,当您尝试在 qrRead 函数中打印它时会导致问题

例子:

class Person {

}

var a:Person? = Person()

if let some = a
{
print(unsafeAddressOf(some))
print(unsafeAddressOf(a!))
}

打印:

0x0000000005011ed0

0x0000000005011ed0

这表明它们是内存中的相同实例。

关于ios - Swift:在更新标签时展开可选值时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35668610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com