Есть две ситуации:
Возможно, что объект есть [NSNull null]
, или это невозможно.
Ваше приложение обычно не должно использовать [NSNull null];
вас, используйте его, только если вы хотите поместить « нулевой » объект в массив или использовать его в качестве значения словаря. И тогда вы должны знать, какие массивы или словари могут содержать нулевые значения, а какие нет.
Если вы считаете, что массив никогда не содержит [NSNull null]
значений, не проверяйте его. Если есть [NSNull null]
, вы можете получить исключение, но это нормально: исключения Objective-C указывают на ошибки программирования. И у вас есть программная ошибка, которую нужно исправить, изменив некоторый код.
Если объект может быть [NSNull null]
, то вы проверяете это довольно просто путем тестирования
(object == [NSNull null])
. Вызов isEqual
или проверка класса объекта - нонсенс. Есть только один [NSNull null]
объект, и простой старый оператор C проверяет его в порядке, самым простым и эффективным способом.
Если вы проверяете NSString
объект, который не может быть [NSNull null]
(потому что вы знаете, что он не может быть [NSNull null]
или потому что вы только что проверили, что он отличается от этого [NSNull null]
, то вам нужно спросить себя, как вы хотите обрабатывать пустую строку, то есть ту, которая имеет длину 0. Если вы обрабатывать это как null
строку nil
, затем test (object.length == 0)
. object.length вернет 0 если object == nil
, так что этот тест охватывает ноль объектов и строк длиной 0. Если вы обрабатываете строку длиной 0, отличную от нулевой строки, просто проверьте, если object == nil
.
Наконец, если вы хотите добавить строку в массив или словарь, и строка может быть nil, у вас есть выбор не добавлять ее, заменять ее @""
или заменять ее [NSNull null]
. Замена его @""
означает, что вы теряете способность различать «без строки» и «строка длины 0». Замена его [NSNull null]
означает, что вы должны писать код при доступе к массиву или словарю, который проверяет [NSNull null]
объекты.