October 24th, 2017
Filed under: iOS Development | Be the first to comment!
Getting the word count of an iOS text view is a little more difficult than a Mac text view because the NSTextStorage
class’s words
property is not available on iOS. A starting point for getting the word count is to separate the components of the text view’s string by whitespace and newline characters.
let words = textView.text.components(separatedBy: .whitespacesAndNewlines)
The problem is the componentsSeparatedBy
function treats empty strings as words. If you have an empty text view, the word count will be 1. Pressing the space bar increments the word count. If you hit the space bar 5 times, the word count goes up by 5 even though you didn’t type any words.
The solution to get an accurate word count is to filter the empty strings out of the array of words.
@IBOutlet weak var textView: UITextView!
let words = textView.text.components(separatedBy: .whitespacesAndNewlines)
let filteredWords = words.filter({ (word) -> Bool in
word != ""
})
let wordCount = filteredWords.count