You definitely don't want to block the main thread. Thats bad; it makes it look like your app is frozen.
It sounds like you want to have a "loading" screen. This way, you could do something like post a notification when your data is ready. Your loading screen's view controller would then be observing that notification and then present the rest of the data when it comes in.