60

I want to check if my array is empty or null, and on base of which I want to create a condition for example.

if(array ==  EMPTY){
//do something
}

I hope I'm clear what I am asking, just need to check if my array is empty?

regards

12 Answers 12

114
if (!array || !array.count){
  ...
}

That checks if array is not nil, and if not - check if it is not empty.

Sign up to request clarification or add additional context in comments.

6 Comments

It works but it's not completely flawless: array.count should be [array count] since you're not dealing with a property (var) here.
Nope -- array.count is just fine in that context. Syntactically, anyway. Stylistically? No particular standard is recommended at this time.
this is the same as if (!array.count)
I think the weight of stylistic opinion is against dot notation for calling generic methods on an object, so I'm with @Rengers on this one. <cowers in a corner waiting for holy war>
For the sake of accuracy @Rengers and @davidf2281, NSArray.h declares count as a property @property (readonly) NSUInteger count;
|
29
if ([array count] == 0)

If the array is nil, it will be 0 as well, as nil maps to 0; therefore checking whether the array exists is unnecessary.

Also, you shouldn't use array.count as some suggested. It may -work-, but it's not a property, and will drive anyone who reads your code nuts if they know the difference between a property and a method.

UPDATE: Yes, I'm aware that years later, count is now officially a property.

Comments

12

you can try like this

if ([array count] == 0)

Comments

9

Just to be really verbose :)

if (array == nil || array.count == 0)

Comments

9

Best performance.

if (array.firstObject == nil)
{
    // The array is empty
}

The way to go with big arrays.

2 Comments

best answer. the others suggest to use count property, which implies enumerating the array and can be a performance issue with big arrays
I prefer this way as well, because we don't actually care about the exact count when we just want to check whether array is empty.
4
if (array == (id)[NSNull null] || [array count] == 0) {
    NSLog(@"array is empty");
}

Comments

3

Swift 3

As in latest version of swift 3 the ability to compare optionals with > and < is not avaliable

It is still possible to compare optionals with ==, so the best way to check if an optional array contains values is:

if array?.isEmpty == false {
    print("There are objects!")
}

as per array count

if array?.count ?? 0 > 0 {
    print("There are objects!")
}

There are other ways also and can be checked here link to the answer

Comments

2

As nil maps to 0, which equals NO, the most elegant way should be

if (![array count])

the '==' operator is not necessary.

Comments

1

You can also do this kind of test using if (nrow>0). If your data object is not formally an array, it may work better.

Comments

1

null and empty are not the same things , i suggest you treat them in differently

if (array == [NSNull null]) {
    NSLog(@"It's null");
} else if (array == nil || [array count] == 0) {
     NSLog(@"It's empty");
}

1 Comment

Could you please brief the difference between both the conditions, in what case which one would call?
0
if (array == nil || array.count == 0 || [array isEqaul [NSNull Null]])

Comments

0

In Swift 4

if (array.isEmpty) {
    print("Array is empty")
}
else{
    print("Array is not empty")
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.