2012-04-07 5 views
-3

У меня есть кодировка ниже, я уверен, что если условие 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]); 
+0

Пожалуйста, не используйте «SOS» в заголовках вопросов. Я отредактировал это из обоих ваших последних вопросов. –

ответ

5

== Использование для сравнения NSString сек сравнивает значение указателя струн. Это, вероятно, не то, что вы хотите. Вместо этого попробуйте следующее:

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

О, боже, спасибо большое. – user1302236

1

Возможно, у вас есть вопросы по указателям.

@ "test" возвращает указатель, который показывает, где существует постоянная строка в памяти.

  • @ "test" = 0xC0001. В адресе 0xC0001 это константа строка @ "test"
  • txtMaster.text = 0xD3401. В 0xD3401 адресовать это объект (вероятно NSString)

В редких случаях, когда @ "тест" и txtMaster.text равны (==), то это означает, что

  • txtMaster.txt = @ «test» = тот же адрес = 0xd32901, и они указывают на на тот же объект.

запомнить Все методы, возвращающие объекты Objective-C, обычные указатели возврата на объекты thoses.

Надеюсь, что туман уходит сейчас.

Смежные вопросы