ios - UITextChecker 在无法猜出单词时崩溃

标签 ios xcode crash uitextchecker

我在这里寻求帮助但找不到。我有一个按钮可以检查拼写,然后用猜测替换单词。我在按钮内有以下代码:

UITextChecker *checker = [[UITextChecker alloc] init];
NSRange checkRange = NSMakeRange(0, [input length]);
NSRange misspelledRange = [checker rangeOfMisspelledWordInString:input
                                                           range:checkRange
                                                      startingAt:checkRange.location
                                                            wrap:NO
                                                        language:@"en_US"];

NSArray *arrGuessed = [checker guessesForWordRange:misspelledRange inString:input language:@"en_US"];
if (misspelledRange.location != NSNotFound) {
    input = [input stringByReplacingCharactersInRange:misspelledRange
                                           withString:[arrGuessed objectAtIndex:0]];
}

它确实修复了一些单词,但不是全部。如果它找到一个单词,它无法猜测它会崩溃并关闭应用程序。我该如何解决这个问题?如果它无法猜出这个词,我希望它忽略该过程。 iOS 文档和 API 引用说如果找不到任何内容,它将返回一个空数组,但为什么会崩溃呢?

这是错误:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'

最佳答案

您必须检查是否至少有一种猜测。这就是它崩溃的原因,您试图索引到一个空数组:

NSArray *arrGuessed = [checker guessesForWordRange:misspelledRange inString:input language:@"en_US"];
// Check if we have a misspelled range and any guesses
if ([arrGuessed count] > 0 && misspelledRange.location != NSNotFound) {
    input = [input stringByReplacingCharactersInRange:misspelledRange withString:arrGuessed[0]];
}

关于ios - UITextChecker 在无法猜出单词时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702886/

相关文章:

visual-studio - VS2005经常崩溃时编译

ios - 核心数据保存异常

ios - '初始化()' is deprecated: init() will be removed in Swift 3. Use ` 零`

ios - 如何在数据库中存储日期和时间(存储用户执行操作时的日期)

ios - IBM Worklight/MobileFirst 6.x/7.0 - buildtime.sh 脚本出现 "Code object is not signed at all."错误

ios - Xcode 8 建议我将最小 iOS 部署目标从 7.1 更改为 8.0

c# - 自定义用户控件引发异常时C#Visual Studio 2017崩溃

ios - sprite-kit 中的简单组合乘数

php - 移动/Web 应用程序后端

ios - 为什么上传到 iTunes 连接时会出现缺少 64 位支持?