Что лучше всего было определить, является ли NSString пустым? Прямо сейчас я использую следующее:Как определить, является ли NSString пустым
if (string == nil || [string isEqualToString:@""]) { // do something }
Спасибо за любые советы.
Что лучше всего было определить, является ли NSString пустым? Прямо сейчас я использую следующее:Как определить, является ли NSString пустым
if (string == nil || [string isEqualToString:@""]) { // do something }
Спасибо за любые советы.
if ([string length] == 0) {
// do something
}
Если строка nil
, то сообщение nil
вернет ноль, и все еще будет хорошо.
Не хорошо Решение
[nil length]
является 0
(0==0)
является 1
тогда ([string length] == 0)
будет 1
. Хотя это неправильно.
Лучший способ
if (![string length]) {
}
length - NUMBER и должен быть проверен с помощью == 0. if (! [Длина строки]) является c-хаком и (семантически) не корректным с тех пор! следует использовать для булевых. Пожалуйста, не говорите, что он все еще работает. Я знаю это. Это просто неандерталиш. – cocoafan
Этот ответ неверен. ! 0 равно 1, точно так же, как 0 == 0. Результат тот же, единственное, о чем можно спорить здесь, это вопрос стиля – Sven
Это позволит не только проверить, если нет ничего в строке, но также возвращает ложь, если это просто пробел.
NSString *tempString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([tempString length] != 0) {
//There is something in the string.
} else {
//There is nothing or it is just whitespace.
}
Это удаляет только начальные и конечные пробелы – uchuugaka
Вы знаете, re право. Я много экспериментировал и должен был скопировать и вставить неправильный код. Это исправлено. Это намного эффективнее. – 2013-06-14 20:23:49
Что бы это ни было, '-stringByReplacingOccurrencesOfString: withString:' не особенно эффективен. Гораздо лучше проверить, что вы на самом деле ищете: символы без пробелов. '! myString || [myString rangeOfCharacterFromSet: [[NSCharacterSet whitespaceCharacterSet] invertedSet] .location == NSNotFound' (В этом случае вам нужно проверить, является ли 'myString'' nil' явно, потому что 'NSRange', вызванный сообщением' nil', не будет 'NSNotFound' в поле' location'.) –
+1 для вашего ответа. как насчет пробелов? Что делать, если вы не хотите считать их? Любой удобный способ? – cocoafan
@cocoafan Не лаконично. Если вам нужно сделать это часто, я бы предложил добавить категорию в 'NSString', что-то вроде' isNotEmpty', что вы можете выполнить свои собственные проверки. Тогда вы можете просто сделать 'if ([string isNotEmpty]) {... } ', и он также будет обрабатывать' nil's правильно ... –
Вы все еще можете знать, почему длина вернулась 0, поэтому иногда полезно проверить нуль, получив нуль. – uchuugaka