It doesn't work properly because these lines are in the wrong order:
[allPasses removeObjectAtIndex:indexPath.row];
// Delete the row from the data source
PassWhizEntity *passToRemove = self.allPasses[indexPath.row];
all you have at the moment is a hidden issue until you get to the last item.
Reverse the order of those lines so that you get the item to delete before you remove it from the array.