Swift 字数统计严重错误

Swift word count fatal error

我正在研究 textViewDidChange 中的字数统计功能。我一输入它就崩溃了。当我粘贴一个句子时,调试器显示它正在获取字数,但是在将字数添加到按钮标题时它崩溃了,并出现致命错误:在展开可选值时意外发现 nil。

func textViewDidChange(textView: UITextView) {
    let wordCount = textView.text.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).count
    let words = String(format: "%d", wordCount)

    countButton.title = "\(words)"
}

确保您的 countButton 不是 nil(检查插座连接)。

此外,您的字符串插值中的变量 count 似乎没有定义 - 可能是仍然是 nil 的 ivar?

编辑:

事实证明,您的 countButton 实际上是 nil 并以编程方式创建。我怀疑这样的定义:

weak var countButton : UIButton!

以及像这样的初始化:

self.countButton = UIButton()

问题是,weak 修饰符告诉系统不持有对象的所有权。因此,它在创建后立即被释放。

试试这个:

let button = UIButton()
self.view?.addSubview(button)
self.countButton = button

The variable wordCount also has a warning saying it was never mutated, consider changing it to let. I assumed var was the was the way to go since the count would change

计数可能会改变。但是变量 wordCount 的值将 永远不会 改变,至少在代码中 you 显示。在创建它之后,您对它所做的唯一一件事就是打印它。因此,它应该是一个 let 变量,正如编译器建议的那样。