作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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.qrCode
至 nil
将其传递给 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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!