Im Allgemeinen ist es erforderlich, eine Klasse für das Netzwerk zu implementieren. Dies ist eine Klasse, die eine URL annimmt und Daten gibt. All dies wird getan, um keine zusätzlichen Logiksteuerungen zu erzielen. Ich habe ein Problem festgestellt, dass beim Erstellen einer Ansicht die Daten nicht angezeigt werden. Das ist Network Klasse:NSURLSession gibt keine Daten im ersten Aufruf zurück
private static var dataTask: NSURLSessionDataTask?
private static var dataJSON: NSData?
private static var sessionConfig: NSURLSessionConfiguration = {
var configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.allowsCellularAccess = false
configuration.HTTPMaximumConnectionsPerHost = 2
configuration.HTTPAdditionalHeaders = ["Accept": "application/json"]
configuration.timeoutIntervalForRequest = 30.0
configuration.timeoutIntervalForResource = 60.0
return configuration
}()
static func getListObjectsBy(url: String?) -> NSData? {
let session = NSURLSession(configuration: sessionConfig)
log.debug("DataTask start")
dataTask = session.dataTaskWithURL(NSURL(string: url!)!) { (data, response, error) in
log.debug("if error = error")
if let error = error {
print(error.localizedDescription)
} else if let httpResponse = response as? NSHTTPURLResponse {
log.debug("if httpResponse")
if httpResponse.statusCode == 200 {
dataJSON = data
} else {
print("Bad request")
}
}
}
dataTask?.resume()
log.debug("DataTask Resume")
return dataJSON
}
Methode viewDidLoad in meinem Haupt-Controller:
let response = Network.getListObjectsBy("http://lb.rmc.su/api-dev/v2/wc/5")
print(String(response))
Mein log sagen mir, dass die Daten Rückkehr gleich Null. Notizen, ich bin zwischen den Controllern mit Hilfe SWRevealViewController wechseln. Beim erneuten Laden des Hauptansicht-Controllers werden die Daten zurückgegeben. Was ich mache?
ich etwas nicht tun, sonst :) Alles Code. Leider verstehe ich nicht wirklich, wann asynchronen Versand zu verwenden ist. Was mache ich dagegen? –
Ich denke, Ihre Antwort ist richtig, aber Sie können ein wenig mehr über die Verwendung von Schließungen, um die Daten in der asynchronen Anruf weiter zu helfen, um die Frage –
Vielen Dank! Jetzt verstehe ich alles! :) –