compare:和isEqualToString:有什么区别?

时间:2010-10-15 22:20:00

标签: iphone objective-c cocoa

我正在研究这个问题:

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");

所以我的问题是:

compare:和isEqualToString:之间的区别是什么? 我是编程新手,所以请耐心等待。
非常感谢。

3 个答案:

答案 0 :(得分:7)

compare:方法允许您确定对象的 排序 ,以便您可以使用它进行排序。 isEqualToString:仅用于确定两个字符串是否具有相同的值(注意:它正在比较值,而不是对象)。

答案 1 :(得分:2)

isEqualToString:专门测试两个字符串的相等性。这种方法增强了字符串比较,只测试两个字符串是否相等(即它们是相同的)。

compare:是用于比较两个对象的通用方法,并不一定针对字符串进行增强。 compare:还返回两个对象的相对位置,不仅是它们是否相等,而且它们是否小于,等于或大于它们被比较的对象。

答案 2 :(得分:0)

compare将为您提供一个NSComparisonResult,您可以使用它在tableView中订购内容,如NSOrderedSame或NSOrderedAscending等。

isEqualTo是一个NSObject方法,它应该被子类扩展覆盖,比如NSString(isEqualToString :),基本上它将一个对象与另一个对象以你期望的方式与内容进行比较。 [@“d”isEqualTo:@“d”]将返回TRUE或1