сравнение двух строк не удается - PullRequest
2 голосов
/ 17 февраля 2012

Я сравниваю две строки, которые явно идентичны. К сожалению, мое условие if не работает должным образом:

NSLog(@"%@ == %@ ?",strippedString1,strippedString2);

if (strippedString1 == strippedString2) {
    [_newBuild setTextColor: [NSColor greenColor] ]; 
    [_OldBuild setTextColor: [NSColor greenColor] ]; 
}

Это мой вывод NSLog: Сборка: 2A12-046 == Сборка: 2A12

Даже побайтное сравнение говорит, что обе строки идентичны: enter image description here

Есть какие-нибудь подсказки?

Ответы [ 4 ]

3 голосов
/ 17 февраля 2012

С == вы сравниваете адрес указателя, чтобы сравнить содержимое строк, которые вы можете использовать:

 [strippedString1 isEqualToString: strippedString2];
0 голосов
/ 17 февраля 2012

Важная часть: вы намеревались использовать isEqualToString

Использование == проверит на равенство указателя, то есть скажет вам, являются ли два сравниваемых объекта на самом деле одним и тем же экземпляром.

Вместо этого я думаю, что вы хотели проверить, что содержимое одинаково, но в соответствии с appledocs вы захотите использовать isEqualToString, когда вы знаете, что два объекта являются строками, так как он намного быстрее, чем isEqual.

0 голосов
/ 17 февраля 2012

Вы не можете сравнивать две строки NSS с оператором ==, вместо этого используйте

[strippedString1 isEqualToString:strippedString2];
0 голосов
/ 17 февраля 2012

Я думаю, что для String вы должны использовать (это Java) .equals() или эквивалентный.

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