didFailWithError будет вызываться, если не удается установить соединение, а также если оно было прервано при загрузке.
Существует хороший класс, называемый достижимостью, который можно использовать для проверки возможности установления соединения перед попыткой установить соединение.один (также, как это можно сделать, например, через Wi-Fi, 3g и т. д.) - вы можете найти его здесь