2015-12-15 2 views
0

Мне нужно настроить некоторые начальные данные, когда начнется мое приложение. У меня есть этот метод с именем loadData(), который делает несколько вызовов внутри него, требующих подключения к Интернету. Мой код выглядит примерно так:Уведомлять, какой вызов был сделан без подключения к достижимости

func setup() { 
    if reachability.isReachable() { 
    // If there is connection, we setup the initial data 
    loadData() 
    } else { 
    //If there is no connection, wait for a notification 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "reachabilityChanged:", name: ReachabilityChangedNotification, object: nil) 
    do { 
     try reachability.startNotifier() 
    } catch { 
     print("Unable to start notifier") 
    } 
} 
} 

func loadData() { 
    loadA() 
    loadB() 
    loadC() 
    .. 
    loadZ() 
} 

func reachabilityChanged(note: NSNotification) { 
    if reachability!.isReachable() { 
    loadData() 
    reachability!.stopNotifier() 
    } 
} 

Это позволяет мне обрабатывать случай, когда нет никакой связи перед началом loadData(). Однако, если связь потеряна, например, во время loadC(), тогда я не смогу добавить уведомление, чтобы позже загрузить оставшиеся данные. Как я могу это достичь?

+0

как вы к этому хотите достичь? как насчет добавления всех ваших элементов в очередь, чтобы вы могли приостановить его и добавить зависимости между ними? – Wain

+0

@ Что-то вроде этого кажется правильным, как бы я это сделал? – Matias

+0

Посмотрите на nsoperation talk из последнего wwdc – Wain

ответ

0

Это зависит от того, что находится внутри ваших функций загрузки. Из-за требований к подключению к Интернету, я думаю, вы используете некоторую связь с серверами.
В этом случае вы можете проверить код ответа и сделать делегат, который предупреждает ваш класс, если что-то пойдет не так. (после этого вы можете вспомнить неисправные функции)

+0

Спасибо @Peter, как бы вы «вспомнили неудавшиеся функции»? Поддерживать флаг каждой функции? – Matias

Смежные вопросы