2016-09-02 3 views
0

У меня есть небольшой вопрос. Я хочу иметь такую ​​функцию:Наблюдать за отделкой json loading

func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) { 
    let request = NSMutableURLRequest(URL: targetURL) 
    request.HTTPMethod = "GET" 

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration() 

    let session = NSURLSession(configuration: sessionConfiguration) 

    let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in 
     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      completion(data: data, HTTPStatusCode: (response as! NSHTTPURLResponse).statusCode, error: error) 
     }) 
    }) 

    task.resume() 
} 

я нашел на appcoda.com, но с возможностью сделать что-то, когда данные будут загружены в законченную разборе. Что-то вроде:

UIView.animateWithDuration(3.0, delay: 0, options: .CurveEaseIn, animations: {() -> Void in 

     }, completion: {finished in 
      self.functionXY() 
    }) 

Моего полного плана, чтобы загрузить данные в формате JSON из двух отдельных страниц, вторая ссылка JSON генерируется из данных первого JSON. Итак, я начинаю HTTP-запрос после первого. Когда второй закончен, я хочу вызвать функцию, которая меняет мой вид с экрана загрузки на mainView.

ответ

-1

Вместо простого запроса вы можете положиться на Alamofire или другие библиотеки с открытым исходным кодом для http/post-request.
В противном случае, вы можете использовать NSURLSessionDataTask/NSURLSessionDownloadTask с соответствующими обработчиками заканчивания

Надеюсь, что это может помочь

0

Вы можете просто вызвать код анимации внутри обработчика завершения работы performGetRequest:

func aFunction() { 
    performGetRequest(yourURL) { (data, HTTPStatusCode, error) in 
     if error == nil { 
      self.animate() 
     } 
    } 
} 

func animate() { 
    UIView.animateWithDuration(3.0, delay: 0, options: .CurveEaseIn, animations: {() -> Void in 

    }, completion: {finished in 
     self.functionXY() 
}) 
Смежные вопросы