问题
NSArray *array = [[NSArray alloc] initWithObjects:@"ΕΛΤΑ",
@"ΕΛΤΑ COURIER", @"ACS", @"ACS ΕΞΩΤΕΡΙΚΟ",
@"DHL", @"INTERATTICA", @"SPEEDEX",
@"UPS", @"ΓΕΝΙΚΗ ΤΑΧΥΔΡΟΜΙΚΗ", @"ΜΕΤΑΦΟΡΙΚΕΣ ΕΞΩΤΕΡΙΚΟΥ", nil];
This is working because it has nil at the end.
But I add objects like this: addObject:name
etc...
So at the end I have to add nil I do this addObhect:nil but when I run the app it still crashes at cellForRowAtIndexPath:
how can I do this work?
Ok, I dont have to add nil
What is the reason that my app crashes then?
回答1:
You can't add nil when you're calling addObject
.
回答2:
If you must add a nil
object to a collection, use the NSNull
class:
The NSNull class defines a singleton object used to represent null values in collection objects (which don’t allow nil values).
Assuming "array" is of type NSMutableArray:
....
[array addObject:[NSNumber numberWithInt:2];
[array addObject:@"string"];
[array addObject:[NSNull null]];
回答3:
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.
回答4:
If you really want a Null-ish item in your collection, NSNull is there for that.
回答5:
nil is used to terminate the array
回答6:
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.
回答7:
nil
is not an object that you can add to an array: An array cannot contain nil
. This is why addObject:nil
crashes.
回答8:
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.
回答9:
You can't add an object to an NSArray
because that class is immutable. You have to use NSMutableArray
if you want to change the array after it is created.
来源:https://stackoverflow.com/questions/2057910/how-to-add-nil-to-nsmutablearray