-3

我有以下编码,我确保如果条件为 TRUE,但我无法进入它。我通过使用 NSLog 在 if 语句之前和之后写入值和长度来证明这一点,都等于“测试”和长度 = 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]);
4

2 回答 2

5

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

if([txtMaster.text isEqualToString:@"test"]) {
    NSLog(@"Success!\n");
}
于 2012-04-07T05:15:26.867 回答
1

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

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

  • @“测试”= 0xC0001。在 0xC0001 地址是常量字符串 @"test"
  • txtMaster.text = 0xD3401。在 0xD3401 地址它是一个对象(可能是 NSString)

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

  • txtMaster.txt = @"test" = same address = 0xd32901 并且它们指向同一个对象。

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

我希望雾现在已经散去。。

于 2012-04-07T10:10:54.463 回答