【问题标题】:UITextChecker Crashes When it Can't Guess a WordUITextChecker 在无法猜出单词时崩溃
【发布时间】:2014-11-02 18:36:25
【问题描述】:

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

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'

【问题讨论】:

    标签: ios xcode crash uitextchecker


    【解决方案1】:

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

    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]];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多