нулевая проверка NSString - PullRequest
2 голосов
/ 19 декабря 2011

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

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

И то, и другое null , но управление не попадает в условие. Пожалуйста, помогите.
Спасибо,
Камень

Ответы [ 5 ]

2 голосов
/ 19 декабря 2011

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

0 голосов
/ 08 января 2013

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

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

if ([@"" isEqualToString: textField.text] || !textField.text) {
        NSLog(@"Text Field is empty");
}
0 голосов
/ 19 декабря 2011

Это:

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");
}

Выходы:

2011-12-19 07:33:54.651 Craplet[2845:707] ==
0 голосов
/ 19 декабря 2011

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

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

if([textField.text isEqualToString:@""])
{
//Some code
} 
0 голосов
/ 19 декабря 2011

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

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

Возможно:

if((textField.text==nil && str==nil) || [textField.text isEqualToString:str])
{
//Some code
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...