Yes, there are three ways to represent a null value in Objective-C.
NULL = Absence of a value with C-style pointers
nil = Absence of value with Objective-C object variables
NSNull = A nil boxed as an object for storage in a collection
If you try adding nil to a NSDictionary or NSArray, you will find out it doesn’t perform as expected. If you absolutely need to store a null value in a collection, you can use NSNull to represent the lack of a value. For example:
NSNull nullValue = [NSNull null]; [anArray addObject:nullValue];
Note, however, that since NSNull represents the lack of a value, there is no way to retrieve that value from the collection. In order to determine if there is no value for a particular key or index, you must compare against NSNull.
id value = [anArray objectAtIndex:3]; if (value == [NSNull null]) { // Do something for a null }
Leave a Reply