Objective-C中正确比较字符串

比较两个字符串是否相等时,应该用isEqualToString:,而不能仅仅只是比较字符串的指针值,例如:

[cpp] view plain copy
  1. NSString *thing1=@"hello 5";  
  2. NSString *thing2;  
  3. thing2=[NSString stringWithFormat:@"hello @d",5];  
  4. if ([thing1 isEqualToString:thing2]){  
  5.    NSLog(@"They are the same!")  
  6. }  

[cpp] view plain copy
  1. if (thing1==thing2){  
  2.    NSLog(@"They are the same!")  
  3. }  

是不同的。

这是因为==运算符只判断thing1和thing2的指针数值,而不是他们所指的对象。由于thing1,thing2是不同的字符串,所以第二种比较方式会认为它们是不同的。

有时我们想检查两个对象的标识:thing1和thing2是同一个对象吗?这时就应该使用运算符==。如果是想查看等价性(即这两个字符串是否代表同一个事物吗),那么请使用isEqualToString: 。


你可能感兴趣的:(Objective-C中正确比较字符串)