Why does my iPhone display no contacts, but display the correct name when I dial a number?

I recently updated to iOS 5 (I know it took me forever), and after I did, all my contacts disappeared. However, when I would dial a number, it recognized it and would show the person's name. It stayed like that for a few hours, and then miraculously my contacts reappeared after I turned the phone off and on a few times. How did that happen?


I had the same problem. Contacts were showing up, for example, if someone called me or sent me a text and were therefore in my 'Recents', but did not show up in my contacts list either through the contacts app or through the phone contacts list itself (probably the same thing anyway!).

The solution that worked for me was to go into iCloud on my iPhone and set Contacts to 'off'. This gave me the option to 'Keep on my iPhone' or 'Delete from My iPhone'. I chose to delete them. Once this had happened, I re-enabled Contacts and my contacts list was all synchronised back from iCloud correctly within a couple of minutes.


Since you don't have the problem anymore, it will be pretty hard to diagnose if we can't reproduce the issue.

My guess would be that you had your contacts sync with Google over Exchange and when you upgraded to iOS and iCloud, the contacts where moved from Google to iCloud.

But it wasn't instantaneous (iCloud was sometimes slow after launch), so your contacts were no longer on Google and still not on iCloud (they probably wait until the upload process is finished to show them on the Contacts app).

That could be why your contacts list was empty (still not uploaded), but when you typed the number, iOS knew the name (the contacts where still on the iPhone, waiting for the upload to complete) and printed it.


Another theory could be that Exchange has 2 contacts "states". The contacts on your address book (that are always on your phone) and the one you can find by searching on the server (from the Contacts app).

And when you typed the number, iOS searched on the server to see if it got a match and printed it, since the contact exists on the server.


I'm a bit less convinced about the second theory, but like I said, it'll be hard to find the real reason for this temporary upgrade glitch, now.