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
变量,正如编译器建议的那样。
我正在研究 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
变量,正如编译器建议的那样。