我希望能够通过在我的视图中调用方法来更新我的uitextview。使用此代码,我收到运行时错误:
Unexpectedly found nil while unwrapping an Optional value
如果我注释掉它运行的vw.updateTerm(...)行。最后,我想用从BLE和/或http请求更新的数据更新uitextview。任何帮助或指示都将非常受欢迎。
我的游乐场swift 3代码如下所示:
import UIKit
import PlaygroundSupport
public class TextViewController : UIViewController {
public var textView : UITextView!
override public func loadView() {
textView = UITextView()
textView.text = "Hello World!\nHello Playground!"
self.view = textView
}
func updateTerm(textToUpdate: String) {
self.textView.text.append(textToUpdate)
}
}
let vw = TextViewController()
vw.updateTerm(textToUpdate: "here you go")
PlaygroundPage.current.liveView = vw
答案 0 :(得分:0)
问题是,当你尝试loadView
时,仍然没有调用updateTerm
,这意味着textView
在nil
中loadView
} vw
实例。
就textView
声明为强制解包属性而言,任何在nil
(如您的情况下)中使用它的尝试都将导致运行时错误。
你应该使它成为常规选项:
public var textView : UITextView?
override public func loadView() {
textView = UITextView()
textView?.text = "Hello World!\nHello Playground!"
self.view = textView
}
func updateTerm(textToUpdate: String) {
self.textView?.text.append(textToUpdate)
}
或者,例如,懒惰的属性(如果适合你的话):
lazy public var textView = UITextView()
override public func loadView() {
textView.text = "Hello World!\nHello Playground!"
self.view = textView
}
func updateTerm(textToUpdate: String) {
self.textView.text.append(textToUpdate)
}
可以找到更多信息here。