Есть две ситуации:
Возможно, что объект [NSNull null]
, или это невозможно.
Ваше приложение обычно не должно использовать [NSNull null];
, вы используете его, только если вы хотите поместить объект " 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]
.