1. создаете destination controller (init или storyboard.instantiateViewController(withIdentifier: "some"))
2. получаете source controller (еслти вы из него вызываете, то self)
3. создаете UIStoryboardSegue
uzolenta, прошу прощения - не заметил вопрос. разделяйте операции с данными, которые уже есть и с теми, которых еще нет. первые отображайте сразу, а вторые - загружайте асинхронно, по очереди или вместе. Вам стоит обратить внимание на работу с блоками(замыканиями), потом почитать про потоки и асинхронное выполнение, GCD. там на пальцах не получится, надо читать. удачи Вам и терпения :)
Можно использовать DispatchSemaphore, но это - не очень хорошая идея. При загрузке контроллера стартуйте загрузку файла и обрабатывайте по результату загрузки в асинхронном режиме. Иначе загрузка файла будет вашать интерфейс. Да и зачем? Учитесь работать с асинхронными вызовами.
REST и сессии несовместимы - сессии предполагают состояния, а REST не использует их. OAuth 2 - это токены, только стандартизированные. Я советую OAuth2.
Правильно. Все - в один класс с настройками :) Можно в бинарнике хранить и шифровать. В любом случае - перехватить очень просто любые ключи в момент передачи данных на сервер, так что делайте static const или #define и складывайте в одно место. И стоит постараться не хранить clientsecret на устройстве.
EvgeniyRava: да, но, во-первых, Вам стоит выполнять этот код, к примеру, раз что тысяч, а во-вторых - научиться пользоваться инструментами или тестами. Но сейчас для ускорения процесса можно для примерной качественной оценки замерять время выполения. Пишу на память:
NSDate *date = [NSDate date];
Пожалуйста, опишите ситуацию чуть подробнее.