2012-04-07 74 views
-3

我有下面的代码,我确定如果条件为真,但我无法进入它。 我证明了通过使用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]); 
+0

请不要在你的问题标题中使用“SOS”。我已经编辑了你最近的两个问题。 – 2012-04-07 16:33:10

回答

5

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

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

噢,我的天啊,非常感谢。 – user1302236 2012-04-07 07:08:22

1

也许你对指针的一些问题。

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

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

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

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

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

我希望现在的雾离开..

相关问题