zurückzugeben Ich habe ein Framework, das eine API aufruft, die eine JSON zurück zu mir zurückgibt. Das Problem ist, dass ich eine Funktion in meinem SDK habe, die NSURLSession verwendet und DataTaskWithRequest aufruft, um die Daten abzurufen. Das Problem ist, dass meine Funktion den Wert zurückgibt, bevor die Daten ordnungsgemäß abgerufen wurden. Ich habe versucht, Completion Handler mit DataTaskWithRequest und derzeit eine While-Schleife verwenden, um auf die Daten empfangen zu warten. Gibt es eine andere Art und Weise, esDelegierte und Protokolle verwenden, um Daten von dataTaskWithRequest in iOS Swift
-Code
public func getDetails() -> AnyObject {
if Reachability.isConnectedToNetwork()
{
received = false
let baseUrl = "API_URL Here"
let url = NSURL(string: baseUrl)
let request = NSURLRequest(URL: url!)
let session = NSURLSession.sharedSession()
print("Starting the connection")
let task = session.dataTaskWithRequest(request, completionHandler : {
(data, response, error) in
//Proper JSON Form
do
{
self.JSON = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
}
catch
{
print("Error")
return
}
self.received = true
})
task.resume()
print("Going through the loop")
while(!received)
{
print("Searching")
}
print(JSON)
return JSON
}
else
{
let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
return 0
}
}
poste deinen Code ... –