0

我正在尝试将 responseDict 传递给 self.saveApiTokenInKeychain(responseDict) 但它说它是一个未解析的标识符。在我实施 Do-Catch 块之前,它工作正常。如何使其再次可以访问该方法?

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)
    })
4

1 回答 1

0

那是因为您的 responseDict 在您调用时不在范围内

self.saveApiTokenInKeychain(responseDict)

将 responseDict 的声明从 do-catch 中移出,如下所示:

var responseDict: WhateverTheTypeIs
do {
    responseDict = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary
} catch let error as NSError {
    print("Error: \(error.domain)")
}
于 2016-04-21T06:45:47.253 回答