Почему две одинаковые строки не тестируются как равные? - PullRequest
1 голос
/ 22 февраля 2010

Мой код:

stringFromRecievedData =
    [[NSString alloc]initWithData:_data1 encoding:NSUTF8StringEncoding];

if (![stringFromRecievedData isEqualToString:lastStringFromRecievedData]) {
    [lastStringFromRecievedData setString: stringFromRecievedData];

Я получаю один и тот же результат "не равный" даже во втором раунде, даже если каждый раз одни и те же данные ...

Это правильный способ сравнить два?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 22 февраля 2010

Если lastStringFromRecievedData является экземпляром NSString (или подклассом, таким как NSMutableString), то это правильный способ сравнения двух строк. В этом случае что-то еще может привести к тому, что ваши строки не будут равны.

Однако, похоже, lastStringFromRecievedData - это какой-то другой объект, потому что вы вызываете setString: для него. Если это так, вам нужно сначала получить строку из этого объекта.

stringFromRecievedData =
    [[NSString alloc]initWithData:_data1 encoding:NSUTF8StringEncoding];

// Assuming 'string' is the function to get the string from 'setString:' below
NSString *otherString = [lastStringFromRecievedData string];

if (![stringFromRecievedData isEqualToString:otherString]) {
    [lastStringFromRecievedData setString: stringFromRecievedData];
0 голосов
/ 23 февраля 2010

Если все, что вы делаете, ищет, чтобы ваш NSMutableString был эквивалентен другому NSString, почему бы не сделать что-то вроде:

lastStringFromRecievedData = [stringFromRecievedData mutableCopy];

Или:

[lastStringFromRecievedData setString:stringFromRecievedData];

Конечный результат будет таким же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...