Я делаю сравнение двух строк, которые, очевидно, идентичны. К сожалению, мой, если условие это не распространяется работа, как и ожидалось:сравнение двух строк не получается
NSLog(@"%@ == %@ ?",strippedString1,strippedString2);
if (strippedString1 == strippedString2) {
[_newBuild setTextColor: [NSColor greenColor] ];
[_OldBuild setTextColor: [NSColor greenColor] ];
}
Это мой NSLog выход: Сложение: 2A12-046 == Сложение: 2A12
Даже байт сравнения байт говорит, что обе строки идентичны:
Любые подсказки?
В дополнение к этому вы получаете постоянную фальцовку в компиляторе, поэтому иногда сравнения '==' кажутся магически полезными, а затем иногда терпят неудачу в зависимости от того, где определена строка и какие параметры компилятора вы используете. –
@MichaelAnderson: wow ... так что если я пытаюсь проверить, совпадают ли 2 объекта (имеют один и тот же адрес), я могу закончить сравнение их содержимого? – whitelionV
Что я пытаюсь сказать: 'const NSString s1 = @" hello "; ... NSString s2 = s1; ... if (s2 == @ "hello") {...} 'может проходить или отказываться в зависимости от настроек компилятора. '==' никогда не будет сравнивать содержимое, только местоположение, но иногда это место может быть одинаковым, если вы этого не ожидаете. Я думаю, что компилятор только сбрасывает константы строковых/базовых типов, а не общие объектные константы, но я не уверен, что это санкционировано или нет - я бы никогда не полагался на него. –