Swift单词计数致命错误

时间:2016-01-13 16:08:40

标签: swift uitextview word-count

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

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

    countButton.title = "\(words)"
}

2 个答案:

答案 0 :(得分:0)

确保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

答案 1 :(得分:0)

  

变量wordCount也有一个警告说它从未变异,考虑将其更改为let。我认为var是自计数改变以来的方式

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