Ваш код выглядит правильно, я думаю, из вашего вопроса вы хотите, чтобы он объяснил?
label.text = textField.text;
Эта строка берет текст, введенный в textField
(который предположительно является UITextField), и присваивает его текстовому свойству label
(которое предположительно является UILabel). Это не имеет ничего общего с проверкой орфографии per se .
NSString * currentWord;
currentWord = label.text;
Копирует текстовую строку обратно из свойства text
метки.
NSRange range = NSMakeRange(0, 0);
Это объявляет структуру NSRange и инициализирует ее пустым значением. В этом нет необходимости, поскольку следующая строка все равно изменит его.
range = [textChecker rangeOfMisspelledWordInString:[currentWord lowercaseString]
range:NSMakeRange(0, [currentWord length])
startingAt:0
wrap:NO
language:@"en_US"];
Это строка, которая на самом деле делает работу.
- Вы ищете слова с ошибками в текстовой строке ранее. Это для хорошей меры, я не знаю, если это строго необходимо.
range:NSMakeRange(0, [currentWord length])
указывает, что следует искать всю строку (от символа 0 до длины строки).
startingAt:0
указывает, что он должен начинаться с начала диапазона. Использование этого было бы в цикле, после нахождения первого слова с ошибкой вы сказали бы ему начинать после конца слова, чтобы найти другое.
wrap:NO
говорит, что не следует начинать сначала с начала диапазона, если слово с ошибкой. Не то, что здесь имеет значение.
- `language: @" en_US "говорит ему использовать встроенный в США словарь английского языка.
Кажется, что нет никакого способа указать пользовательский словарь, кстати.
if (range.location == NSNotFound) {
NSLog(@"Word found");
}
else {
NSLog(@"Word not found");
}
Это просто проверяет результат. Если найдено слово с ошибкой, range.location
будет началом слова, а range.length
будет длиной. Если все слова написаны правильно, range.location
будет NSNotFound и range.length
будет 0.