我试图在不使用按钮的情况下将文本添加到textview中并且我一直遇到致命错误:在按下aButton时展开nilb时意外地找到了nil。错误将我带到myTextView.text =""线。到目前为止我发现的关于错误的帖子是什么"致命错误:在打开一个可选值时出乎意料地发现了n"意思?如果你的问题是一个声明的变量是很好的,你可以使用if let方法修复它,但是当它与文本视图中添加文本有关时,答案会变得更加困难。
class ViewController: UIViewController
{
var textArray: [String] = []
@IBOutlet weak var myTextView: UITextView!
func addText()
{
myTextView.text = ""
for words in textArray
{
myTextView.textStorage.append(NSAttributedString(string: words))
}
}
@IBAction func aButton(_ sender: Any)
{
textArray.append("a ")
ViewController().addText()
}
}
答案 0 :(得分:0)
编写ViewController().addText()
意味着您正在创建类ViewController的新实例,而不是应该使用self.addText()
答案 1 :(得分:0)
fatal error: unexpectedly found nil while unwrapping an Optional value
可选值为nil表示您的IBOutlet弱变量" myTextView"是零,在一个零上调用方法,这会崩溃你的应用程序。
当您使用StoryBoard添加textView时,它需要一些准备工作才能将您的插座连接或用于您的代码" ViewController" ,例如从nib文件加载和创建对象
还有什么,因为你在一个新的ViewController对象中调用addText方法,即使没有任何错误,它也不会改变屏幕上的textView,因为它们是不同的对象。比如@Bilal说,使用self.addText()或addText()就行了。
最后,debuger是你最好的朋友
答案 2 :(得分:0)
@IBOutlet weak var txtView: UITextView! //your textView
var textArray: [String] = []
func addText() //function
{
txtView.text = "" //your textView
for words in textArray
{
txtView.textStorage.append(NSAttributedString(string: words))
}
}
//Action
@IBAction func btnClick(_ sender: UIButton) {
textArray.append("a ")
addText()//call your function
}
I hope, its work for you!