刚刚将我的代码转换为Swift 1.2。我正在使用以下代码获得BAD_EXEC_ACCESS:
var wordsBeingTyped = NSString()
var lastWord = String()
wordsBeingTyped = proxy.documentContextBeforeInput // Gets the string being typed
let range = NSMakeRange(0, (wordsBeingTyped).length)
wordsBeingTyped.enumerateSubstringsInRange(range, options: NSStringEnumerationOptions.ByWords) { (substring, substringRange, enclosingRange, stop) -> () in
lastWord = substring // The last word in the string wordsBeingTyped
}
let lastWordLowercase = lastWord.lowercaseString
崩溃发生在最后一行。出于测试目的,我将该行更改为:
let lastWordLowercase = wordsBeingTyped.lowercaseString
它运作得很好。奇怪的是,当我在字符串中键入第一个单词时,它只会崩溃。在空格字符之后没有崩溃。
更新:我想到的工作是在使用enumerateSubstringsInRange之前创建一个新的let将wordBeingTyped转换为小写。所以:
let lowercaseWordsBeingTyped = wordsBeingTyped.lowercaseString
// ..enumerate string to get last word typed
let lastWordLowercase = lastWord
希望能有所帮助。