2016-04-21 8 views
0

Ich versuche, ResponseDict an self.saveApiTokenInKeychain (responseDict) übergeben, aber es sagt, es ist eine unaufgelöste Kennung. Bevor ich den Do-Catch-Block implementiert habe, hat es funktioniert. Wie mache ich es wieder zugänglich für diese Methode?Kein Zugriff auf meine Variable außerhalb Do-Catch-Block in Swift 2.2

httpHelper.sendRequest(httpRequest, completion: {(data:NSData!, error:NSError!) in 
    //show error 
    if error != nil { 
     let errorMessage = self.httpHelper.getErrorMessage(error) 
     self.displayAlertMessage("Error", alertDescription: errorMessage as String) 

     return 
    } 
    //hide activity indicator and update userLoggedInFlag 
    self.activityIndicatorView.hidden = true 
    self.updateUserLoggedInFlag() 

    var jsonerror:NSError? 

    do { 
     let responseDict = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary 
    } catch let error as NSError { 
     print("Error: \(error.domain)") 
    } 
    var stopBool : Bool 

    //save API AuthToken and ExpiryDate in Keychain 
    self.saveApiTokenInKeychain(responseDict) 
    }) 

Antwort

0

Das ist, weil Ihr responseDict in ihrem Umfang nicht ist, wenn Sie

self.saveApiTokenInKeychain(responseDict) 
rufen Sie die Erklärung von responseDict aus dem Do-Fang wie diese bewegen

:

var responseDict: WhateverTheTypeIs 
do { 
    responseDict = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary 
} catch let error as NSError { 
    print("Error: \(error.domain)") 
} 
+0

Dank, dass es tat – Nick