Ответ 1
Что вы можете сделать:
NSString *stringOne = @"abcdef";
NSString *stringTwo = @"defabc";
NSComparisonResult result = [stringOne compare:stringTwo];
if (result == NSOrderedAscending) // stringOne < stringTwo
...
if (result == NSOrderedDescending) // stringOne > stringTwo
...
if (result == NSOrderedSame) // stringOne == stringTwo
...
Существуют также другие методы для выполнения различных видов сравнений (таких как нечувствительность к регистру, диакритическая нечувствительность и т.д.), но результат сравнения можно по-прежнему обрабатывать, как указано выше. В качестве альтернативы, некоторым людям легче сравнить result
с 0. Оператор, используемый для сравнения result
с 0, будет тем же самым оператором, который используется в других языках, где сравнение строк может быть выполнено напрямую:
if (result < 0) // stringOne < stringTwo
...
if (result > 0) // stringOne > stringTwo
...
if (result == 0) // stringOne == stringTwo
...
Большинство (если не все) методов compare:...
NSString являются обертками для compare:options:range:locale:
. Различные варианты опций, которые вы можете пройти, можно найти здесь.