NSArray *array = [[NSArray alloc] initWithObjects:@\"ΕΛΤΑ\",
@\"ΕΛΤΑ COURIER\", @\"ACS\", @\"ACS ΕΞΩΤΕΡΙΚΟ\",
@\"DHL\",
nil
is not an object that you can add to an array: An array cannot contain nil
. This is why addObject:nil
crashes.
You need to add NSNull class and the best way to do it is like this:
NSArray *array = @[ @"string", @42, [NSNull null] ];
I personally recommend to use a specific value like 0
instead of null or nil in your design of your code, but sometimes you need to add null.
There is a good explanation from this Apple reference.
pass your object through this method when adding to array to avoid attempt to insert nil object from objects crashes.
-(id) returnNullIfNil:(id) obj {
return (obj == nil) ? ([NSNull null]) : (obj);
}
[NSNull null] returns an null object which represents nil.
You can't add nil when you're calling addObject
.
nil is used to terminate the array
You don't need to call [addObject:nil]
The nil
in initWithObjects:
is only there to tell the method where the list ends, because of how C varargs
work. When you add objects one-by-one with addObject:
you don't need to add a nil.