Используя NSNull
NSNull
класс определяет одноэлементный объект, который Вы используете для представления нулевых значений в ситуациях где nil
запрещается как значение (обычно в объекте коллекции, таком как массив или словарь).
NSNull *nullValue = [NSNull null]; |
NSArray *arrayWithNull = @[nullValue]; |
NSLog(@"arrayWithNull: %@", arrayWithNull); |
// Output: "arrayWithNull: (<null>)" |
Важно ценить что NSNull
экземпляр семантически отличается от NO
или false
— они оба представляют логическое значение; NSNull
экземпляр представляет отсутствие значения. NSNull
экземпляр семантически эквивалентен nil
, однако, также важно ценить, что это не равно nil
. Для тестирования на значение несуществующего объекта необходимо поэтому сделать сравнение прямого дополнения.
id aValue = [arrayWithNull objectAtIndex:0]; |
if (aValue == nil) { |
NSLog(@"equals nil"); |
} |
else if (aValue == [NSNull null]) { |
NSLog(@"equals NSNull instance"); |
if ([aValue isEqual:nil]) { |
NSLog(@"isEqual:nil"); |
} |
} |
// Output: "equals NSNull instance" |