使用函数

时间:2017-07-19 01:36:27

标签: ios swift xcode

我试图在不使用按钮的情况下将文本添加到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()
  }
}

3 个答案:

答案 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文件加载和创建对象

for more info about nib file

还有什么,因为你在一个新的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!