NSString объект сравнить ноль
Поэтому у меня есть объект NSString, который я объявляю так:
NSString * XMLOut;
Теперь этот объект может быть пустым или не пустым.
Как я могу это увидеть?
If ([XMLOut isEqual:nil]) {
NSLog(@"XMLOut is empty");
} else {
NSLog(@"XMLOut is not empty");
}
это правильно?
1 ответ
Теперь этот объект может быть пустым или не пустым.
Пусто это не то же самое, что nil
,
Пустая строка все еще является строкой. Оно имеет length
(ноль), вы можете добавлять к нему другие строки, включать их в строки, к которым присоединяется какой-либо символ, и т. д.
nil
не является объектом Там нет строки Там ничего нет. У него нет ни длины, ни каких-либо других свойств.
Итак, вы имеете в виду "Я хочу сравнить мою строку, которая может быть nil
, чтобы определить, является ли это nil
"Или" Я хочу сравнить мою строку, которая может быть пустой, чтобы определить, является ли она пустой "?
Проверка, является ли это nil
Документация для isEqual:
Метод говорит:
anObject
: Объект для сравнения с получателем. Может бытьnil
в этом случае этот метод возвращаетNO
,
Так что если XMLOut
не является nil
, [XMLOut isEqual:nil]
гарантированно вернуть NO
,
Но что, если это не nil
?
Сообщения для nil
возвращать в основном каждый вид нуля (за исключением структур и т.п.), который включает в себя NO
,
Который означает, что [XMLOut isEqual:nil]
всегда будет NO
:
- Если
XMLOut
являетсяnil
ответ всегдаNO
независимо от вопроса. - Если
XMLOut
не являетсяnil
, ответNO
потому что ни одна строка не равнаnil
,
Использовать ==
оператор вместо. XMLOut == nil
правильно проверит ли XMLOut
является nil
,
Проверка, пусто ли это
Как уже сказал вам Мах в своем комментарии, попросите строку для его length
,
- Если
XMLOut
являетсяnil
ответ всегда равен нулю независимо от вопроса. - Если
XMLOut
пустая строка, ее длина равна нулю. - Если
XMLOut
любая другая строка, ее длина больше нуля.