Как проверить, равен ли [request responseString] какой-либо другой строке? - PullRequest
3 голосов
/ 06 сентября 2011

Например, значение [request responseString], отправленное моим сервлетом в мое приложение для iphone, - «myinfo» В своем приложении для iphone я сделал такую ​​строку:

 NSString *str = @"myinfo";

тогда у меня есть, если еще

 if([responseString isEqualToString:str]){
    NSLog(@"condition true");

}else{
        NSLog(@"condition false");
}

в консоли всегда отображается «условие ложно». В чем проблема? Разве isEqualToString не метод записи, чтобы проверить, равны ли строки или нет? Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 06 сентября 2011

Как бы вы ни думали, что ваши две строки абсолютно равны, они не равны.Поверьте, если бы -isEqualToString: не вернул YES для двух одинаковых строк, кто-то заметил бы, что через 20 с лишним лет он является частью API-интерфейса Cocoa.

Я подозреваю, что одна из ваших двух строксодержит некоторые непечатаемые символы.Возможно, у вас есть перевод строки, пробел или табуляция.Другая возможность (с которой я недавно столкнулся) заключается в том, что для определенных кодировок набора символов вы можете создать NSString с нулевым символом в нем.Если это в конце, оно не будет отображаться.Попробуйте записать длины двух строк или преобразовать их в NSData объекты с использованием кодировки UTF16 и зарегистрировать их.

2 голосов
/ 06 сентября 2011

Метод NSString isEqualToString является правильным для использования здесь. Вы можете проверить работоспособность, добавив журнал к вашему методу:

NSLog(@"responseString = %@",responseString);
NSLog(@"str = %@",str);

if([responseString isEqualToString:str]){
    NSLog(@"condition true");

}else{
    NSLog(@"condition false");
}

Помните, что NSString s чувствительны к регистру, поэтому две строки должны выглядеть одинаково.

1 голос
/ 07 сентября 2011

Поскольку вы сказали, что используете подключений, иногда данные, извлекаемые из Интернета, странные, вы должны сначала закодировать данные в строку, а затем NSLog, чтобы увидеть, есть ли у них специальные символы.

NSString *response = [[NSString alloc] initWithData:dataRetrieved encoding:NSUTF8StringEncoding];

Тогда вы можете убедиться, что ваш [request responseString] не получает специальных символов.

0 голосов
/ 09 февраля 2013

Лучший способ сравнить строки в ios:

NSString *responseString = <your string>;
NSString *string2 = <your string>;

if ([responseString caseInsensitiveCompare:string2] == NSOrderedSame) {
    //strings are same
} else {
    //strings are not same
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...