我正在尝试检查字符串以查看其中是否有任何拼写错误的单词。 我正在使用苹果UITextChecker类这样做:
#import <UIKit/UITextChecker.h>
id textChecker = [UITextChecker new];
NSInteger currentOffset = 0;
NSRange currentRange = NSMakeRange(0, 0);
NSRange stringRange = NSMakeRange(0, 2);
NSArray *guesses;
NSString *theLanguage = [[UITextChecker availableLanguages] objectAtIndex:0];
if (!theLanguage)
theLanguage = @"en_US";
currentRange = [textChecker rangeOfMisspelledWordInString:currentText range:stringRange
startingAt:currentOffset wrap:NO language:theLanguage];
// NSLog("@currentRange is %i", currentRange);
if (currentRange.location == NSNotFound) {
NSLog(@"No wrong words");
}
else {
NSLog(@"Words were found wrong");
}
}
无论输入什么词,它总会返回“发现错误的词”
我做错了什么?
谢谢!
答案 0 :(得分:4)
您正在测试哪些单词示例?我猜你的问题可能是stringRange
被设置为{0,2}
的事实所以它只检查字符串中的前两个字符是否拼写错误。如果前两个字符不是单词,那么我认为它说它拼写错误。尝试将其设置为{0,string.length}
,看看会发生什么。
答案 1 :(得分:1)
最终版本。适用于我的代码(即使是一个单词) -
NSRange range = NSMakeRange(0, 0);
range = [textChecker rangeOfMisspelledWordInString:[currentWord lowercaseString]
range:NSMakeRange(0, [currentWord length])
startingAt:0
wrap:NO
language:@"en_US"];
if (range.location == NSNotFound) {
NSLog(@"Word found");
}
请注意针对Apple原始代码的两项更改: