2015-01-02 9 views
0

Я звоню эту строку кода:NSURLSession с автономной URL

let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in 
    ... 
} 

task.resume() 

, но я хотел бы, чтобы справиться, когда URL отсутствует, когда я не получаю обратно информацию с сервера.

У меня нет идеи о том, как это сделать, потому что процесс вызова задачиWithURL никогда не останавливается, он пытается подключиться к серверу.

Кто-нибудь знает, как с этим справиться?

** //////////////////////////////////////////// ///////////

С помощью этого жесткого кода я решить мою проблему **

if data != nil { 
    var urlContent = NSString(data: data!, encoding: NSUTF8StringEncoding) 
    if urlContent?.length > 0 { 
     ... 
    }else { 
     ... 
    } 
}else{ 
    ... 
} 

Это не хороший код, но решает мою проблему сейчас.

ответ

1

Вам нужно добавить к нему блок завершения. Просто создайте функцию для запуска загрузки:

func getDataFromUrl(url:NSURL, completion: ((data: NSData?) -> Void)) { 
    NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in 
     completion(data: NSData(data: data)) 
    }.resume() 
} 

Тогда вы должны использовать dispatch_async (dispatch_get_main_queue())

getDataFromUrl(NSURL(string: "http://.....")!) { data in 
    dispatch_async(dispatch_get_main_queue()) { 
     println("Finished downloading") 
     // you can use the data! here 
     if data != nil { 
      // there is data. do this 
     } else { 
      // there is no data. do that 
     } 

    } 
} 
+0

Леонардо, он не решить мою проблему. Я до сих пор не знаю, возвращаются ли данные с URL-адреса с чем-то другим, чем ничего –

+0

Но я хотел изменить представление, если данные не были возвращены. Brs no Stack hahah –

+0

@GabrielAraujo Если вы хотите знать, когда вы ничего не получите, просто используйте переменные ответа или ошибки, чтобы проверить. Например, если время соединения заканчивается, вы получите сообщение об ошибке. –

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