2010-05-09 2 views

ответ

24
if ([string length] == 0) { 
    // do something 
} 

Если строка nil, то сообщение nil вернет ноль, и все еще будет хорошо.

+0

+1 для вашего ответа. как насчет пробелов? Что делать, если вы не хотите считать их? Любой удобный способ? – cocoafan

+1

@cocoafan Не лаконично. Если вам нужно сделать это часто, я бы предложил добавить категорию в 'NSString', что-то вроде' isNotEmpty', что вы можете выполнить свои собственные проверки. Тогда вы можете просто сделать 'if ([string isNotEmpty]) {... } ', и он также будет обрабатывать' nil's правильно ... –

+0

Вы все еще можете знать, почему длина вернулась 0, поэтому иногда полезно проверить нуль, получив нуль. – uchuugaka

0

Не хорошо Решение

[nil length] является 0

(0==0) является 1

тогда ([string length] == 0) будет 1. Хотя это неправильно.

Лучший способ

if (![string length]) { 

} 
+2

length - NUMBER и должен быть проверен с помощью == 0. if (! [Длина строки]) является c-хаком и (семантически) не корректным с тех пор! следует использовать для булевых. Пожалуйста, не говорите, что он все еще работает. Я знаю это. Это просто неандерталиш. – cocoafan

+2

Этот ответ неверен. ! 0 равно 1, точно так же, как 0 == 0. Результат тот же, единственное, о чем можно спорить здесь, это вопрос стиля – Sven

2

Это позволит не только проверить, если нет ничего в строке, но также возвращает ложь, если это просто пробел.

NSString *tempString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 


if ([tempString length] != 0) { 
    //There is something in the string. 
} else { 
    //There is nothing or it is just whitespace. 
} 
+0

Это удаляет только начальные и конечные пробелы – uchuugaka

+0

Вы знаете, re право. Я много экспериментировал и должен был скопировать и вставить неправильный код. Это исправлено. Это намного эффективнее. – 2013-06-14 20:23:49

+1

Что бы это ни было, '-stringByReplacingOccurrencesOfString: withString:' не особенно эффективен. Гораздо лучше проверить, что вы на самом деле ищете: символы без пробелов. '! myString || [myString rangeOfCharacterFromSet: [[NSCharacterSet whitespaceCharacterSet] invertedSet] .location == NSNotFound' (В этом случае вам нужно проверить, является ли 'myString'' nil' явно, потому что 'NSRange', вызванный сообщением' nil', не будет 'NSNotFound' в поле' location'.) –