2010-10-15 3 views
4

Я работал над этим:В чем разница между compare: и isEqualToString :?

NSString *str1 = @"This is string A"; 
NSString *str2 = @"This is string B"; 
NSComparisonResult compareResult; 
if([str1 isEqualToString:str2] == YES) 
    NSLog (@"str1 == str2"); 
else 
    NSLog (@"str1 != str2");  

compareResult = [str1 compare: str2]; 

if (compareResult == NSOrderedAscending) 
    NSLog (@"str1 < str2"); 

else if(compareResult == NSOrderedSame) 
    NSLog (@"str1 == str2"); 

else 
    NSLog (@"str1 > str2"); 

Так что мой вопрос:

чем разница между сравнить: и isEqualToString:

Я новичок в программировании, поэтому, пожалуйста, потерпите.
Большое спасибо.

ответ

7

Сравнение: метод позволяет определить заказ объектов, так что вы можете использовать его для сортировки. IsEqualToString: просто для определения того, имеет ли две строки одно и то же значение (обратите внимание: оно сравнивает значение, а не объекты).

+0

Спасибо за ответ. Так что, если бы я хотел увидеть, были ли у двух строк одинаковые символы. Пример: str1 = @ "ABCD" и str2 = @ "DCBA". Я знаю, что это не те же строки, но что я буду использовать, чтобы увидеть, были ли у них одинаковые символы? Извините, если я прыгаю вперед, но этот вопрос задерживается в моей голове. – Dives

+2

Ha. Это достойно другого вопроса. Нет единого встроенного метода, который скажет вам об этом, но это не сложно реализовать. Используйте NSMutableArray и добавьте все буквы из первой строки. Затем повторите все буквы во второй строке и убедитесь, что они существуют в массиве (и удаляют их). Когда вы закончите, убедитесь, что массив пуст. –

+0

Согласен, это определенно новый вопрос. Но спасибо за ответ. Я вернусь к нему, когда начну работать с массивами. Еще раз спасибо. – Dives

2

isEqualToString: в частности проверяет равенство двух строк. Этот метод улучшен для сравнения строк, и только тесты, если две строки равны (то есть, они одинаковы).

сравнение: это общий метод сравнения двух объектов и не обязательно улучшен для строк. compare: также возвращает относительное положение двух объектов, а не только, являются ли они равными, а скорее они меньше или равны или больше объекта, к которому они сравниваются.

0

сравнение даст вам NSComparisonResult, который вы можете использовать для заказа вещей внутри tableView, например NSOrderedSame или NSOrderedAscending и т. Д.

isEqualTo - метод NSObject, который должен быть расширен за счет подклассов, таких как NSString (isEqualToString :), в основном он сравнивает объект с другим объектом так, как вы ожидали бы, с содержимым. [@ "d" isEqualTo: @ "d"] вернет TRUE или 1

+1

'isEqualTo:' на самом деле для сравнения AppleScript. Такие методы, как 'isEqualToString:', кроме того же, не связаны с ним. Полностью-общая версия - isEqual: '. (Почему существует отдельный 'isEqualTo:' находится вне меня. Кроме того, константа Objective-C для true - 'YES'. –

Смежные вопросы