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 に答える