为什么这些字符串不相等?

时间:2012-04-07 05:07:56

标签: objective-c if-statement

我有以下编码,我确保如果条件为TRUE,但我无法进入它。 我通过使用NSLog将步骤前后的值和长度写入if语句来证明它,两者都等于“test”和length = 4,任何人都可以解决我的问题吗?

请看下面链接哪个是我的大写屏幕,请帮助,谢谢!!!!

http://postimage.org/image/rvtxcq1g1/

NSLog(@"Before value=%@, lenght=%i", txtMaster.text, [txtMaster.text length]);

if (txtMaster.text == @"test")
{
   NSLog(@"%@\n", @"Success");
}

NSLog(@"After value=%@, lenght=%i", txtMaster.text, [txtMaster.text length]);

2 个答案:

答案 0 :(得分:5)

使用==比较NSString s比较字符串的指针值。这可能不是你想要的。相反,试试这个:

if([txtMaster.text isEqualToString:@"test"]) {
    NSLog(@"Success!\n");
}

答案 1 :(得分:1)

可能你对指针有一些疑问。

@“test”返回一个指针,显示常量字符串在内存中的位置。

  • @“test”= 0xC0001。在0xC0001地址处它是常数 string @“test”
  • txtMaster.text = 0xD3401。在0xD3401地址处它是一个对象 (可能是NSString)

在极少数情况下@“test”和txtMaster.text相等(==)那么这意味着

  • txtMaster.txt = @“test”=同一地址= 0xd32901,他们指向 相同的对象。

请记住返回Objective-C对象的所有方法通常会返回对象上的指针。

我希望迷雾现在离开......