2011-12-19 5 views
2

у меня есть две строки оба со значением null. Но когда я сравниваю строку у меня есть некоторые проблемы:null проверка NSString

if([textField.text isEqualToString:str]) 
{ 
//Some code 
} 

Оба являются нуль, но управление не попасть в если условие.
Пожалуйста, помогите.
Спасибо,
камень

+0

откуда вы получаете значение str. Пожалуйста, предоставьте дополнительную информацию, чтобы понять вашу проблему. – MinuMaster

+0

@hotlicks: thnx для исправления. Конечно, u r r8. – iCoder4777

ответ

2

[nil anyMethodName] всегда возвращает ноль/NO. Вам нужно сравнить с ==, чтобы обрабатывать нулевой регистр (но по-прежнему сравнивать с той или иной формой isEquals для обработки непустого случая).

0

isEqualToString работает с NSString, указатели (textField.text и str), которые являются нулевыми, не указывают на объекты. Отправка сообщения в nil разрешена и возвращает nil.

В таком случае, как первый, проверьте, что указатели указывают на действительные объекты, в случае NSString объектов.

Возможно:

if((textField.text==nil && str==nil) || [textField.text isEqualToString:str]) 
{ 
//Some code 
} 
+0

Или вы можете сделать первый тест просто 'textField.text == str'. –

+0

Да, но тогда похоже, что адреса сравниваются, и мне не нравится код, который несколько вводит в заблуждение. Я чувствую, что 'nil' более ясен. – zaph

+0

Ну, адреса сравниваются. Если две строки оказываются одними и теми же, тогда второй тест будет закорочен, что вполне нормально. –

0

Я не уверен, что вы хотите сделать,

, но если вы хотите сделать что-то, когда текстовое поле пустым, вы можете написать

if([textField.text isEqualToString:@""]) 
{ 
//Some code 
} 
0

Этот :

NSString *s1 = nil; 
NSString *s2 = nil; 

// you can compare two nils 
if (s1 == s2) 
{ 
    NSLog(@"=="); 
} 

// s1 is nil so you shouldn't send a message to it 
if ([s1 isEqualToString:s2]) 
{ 
    NSLog(@"isEqualToString"); 
} 

Out Поставок:

2011-12-19 07:33:54.651 Craplet[2845:707] == 
0

Непонятно, что вы хотите сделать. Я предполагаю, что вы хотите проверить, пусто ли текстовое поле.

Если текстовое поле пуст, может быть назначено одно из двух значений. Они могут быть @ "" или ноль. Итак, вы должны проверить как

if ([@"" isEqualToString: textField.text] || !textField.text) { 
     NSLog(@"Text Field is empty"); 
} 
Смежные вопросы