我已经找到了帮助,但在这里找不到。我有一个检查拼写的按钮,然后用猜测替换这些单词。我在按钮内有以下代码:
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'
答案 0 :(得分:0)
你必须检查至少有一个猜测。这就是它崩溃的原因,你试图索引到一个空数组:
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]];
}