Это дало мне довольно большую головную боль.По какой-то причине, когда я использую этот код, оператор if всегда оценивается как false:
while(!feof(file))
{
NSString *line = [self readNSString:file];
NSLog(@"%@", line);
NSLog(@"%@", search);
NSRange textRange;
textRange =[line rangeOfString:search];
if(textRange.location != NSNotFound)
{
NSString *result = [line substringFromIndex:NSMaxRange([line rangeOfString:search])];
resultView.text = result;
}
else
{
resultView.text = @"Not found";
}
}
Когда функции выполняются, два NSLogs сообщают мне, что строки "line" и "search" - это то, что онидолжно быть, так почему тогда оператор if всегда принимает значение false?Я, должно быть, упускаю что-то простое, было бы здорово иметь другой набор глаз.Спасибо
edit: (функция "readNSString")
- (NSString*)readNSString:(FILE*) file
{
char buffer[300];
NSMutableString *result = [NSMutableString stringWithCapacity:256];
int read;
do
{
if(fscanf(file, "%299[^\n]%n%*c", buffer, &read) == 1)
[result appendFormat:@"%s", buffer];
else
break;
} while(r == 299);
return result;
}
edit 2:
поиск установлен с вызовом первой функции, с переменной NSString * в качествепараметр, подобный этому:
NSString *textFieldText = [[NSString alloc]
initWithFormat:@"%@", textField.text];
[self readFile:textFieldText];
изменить 3 (вывод NSLogs)
строка: Германия Италия Франция
поиск: Италия