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 любая другая строка, ее длина больше нуля.
Другие вопросы по тегам