 <p>Sounds like you are getting back an empty response, so that null check always resolves to true. Try checking if the count of the <code>NSArray</code> is greater than 0 instead of <code>if(self.jobs != nil)</code></p> <p>Just change <code>if(self.jobs != nil)</code> to <code>if([self.jobs count] &gt; 0)</code>. </p> <pre><code>if([self.jobs count] &gt; 0) { [self.tableView reloadData]; } else { UIAlertView* alert_view = [[UIAlertView alloc] initWithTitle: @"Failed to retrieve data" message: nil delegate: self cancelButtonTitle: @"cancel" otherButtonTitles: @"Retry", nil]; [alert_view show]; } </code></pre> <p>You might also want to do a null check before you try and do the count to avoid any null reference exceptions:</p> <pre><code>if(self.jobs != nil &amp;&amp; [self.jobs count] &gt; 0) </code></pre>