2016-09-01 2 views
1

Мое приложение сильно зависит от данных, которые поступают. Я хочу, чтобы он запускал индикатор активности и отключил взаимодействие пользователя с представлением во время загрузки данных.Истина, если обработчик завершения выполнен

Есть ли способ проверить или вернуть что-либо при завершении обработчика завершения?

ответ

0

Определите свойство, которое сохраняет обработчик завершения, и вызвать его, когда получается все данные:

var didObtainAllData: (() -> Void)? 

func obtainData() { 
    .... 
    // When data is obtained. 
    didObtainAllData?() 
} 
+0

obtainData нормальная функция, которая работает в другом порядке по сравнению с completionhandler. – bCM

+0

Я не могу положить 'didObtainAllData' внутри обработчика завершения и снаружи. – bCM

+0

@bCM Извините, я не понял, что вы пытались сказать. –

0
typealias CompletionHandler = (success:Bool) -> Void 

func downloadFileFromURL(url: NSURL,completionHandler: CompletionHandler) { 

**download code** 

let flag = true 

верно, если загрузка удастся, иначе ложь

completionHandler(success: flag) 
} 

Как это использовать.

downloadFileFromURL(NSURL(string: "url_str")!, { (success) -> Void in 

**When download completes,control flow goes here.** 

    if success { 

    } else { 
    } 
}) 
0

Вы можете написать

func processingTask(condition: String, completionHandler:(finished: Bool)-> Void) ->Void {   
} 

Использование

processingTask("test") { (finished) in 
     if finished { 
      // To do task you want 
     } 
    } 
Смежные вопросы