Антон Парфенов: давайте расскажу, чем он лучше – поскольку запрос асинхронный, то completionHandler вызывается не в основном потоке, а любые манипуляции, затрагивающие UI, нужно выполнять в основном. Первый вариант (без dispatch'а) работал, но скорее всего с фризами, или чем-то подобным.
ermolushka: выделите в сториборде UIImageView и в atributes inspector'е внизу поставьте галочку installed (это из-за того, что у вас в проекте включены size classes). А из viewDidLoad уберите registerClass: forCellWithReuseIdentifier: , это нужно только когда кастомная ячейка создаётся в коде, а не в сториборде.