Вы говорите о двух разных темах:
- Доступ к данным из основного источника со всех контроллеров представления.
- Доступ к данным с сервера.
Лучшим решением для вас будет создание нового класса, который будет содержать переменные, которые используются некоторыми различными классами. В этом уроке объясняется, как это сделать - я думаю, что это будет одним из лучших решений, которые вы найдете в Интернете.
Для решения второго вопроса вам также следует создать класс, который будет выполнять операторы SQLite и получать информацию из базы данных. Вы должны использовать SQLite для этого, и если вам это не понравится, вы можете попробовать использовать Core Data, хотя SQLite, на мой взгляд, намного проще.
Этот урок описывает, как это сделать.
После того, как вы выполнили обе вещи, вы можете создать экземпляр класса, который будет обрабатывать для вас службы баз данных в классе, который обменивается информацией между контроллерами представления и получает доступ к этому экземпляру из разных контроллеров представления.
В конце концов, вы можете попытаться выполнить такие задачи в разных потоках. Вы должны попытаться сделать это, используя объекты NSOperationQueue - они сделают большую часть работы за вас. Я предлагаю прочитать о них в документации для разработчиков , предоставленной Apple, чтобы понять, как это работает.