2016-10-21 2 views
1

Ich aktualisierte mein Projekt von Swift 2.2 zu Swift 3.0. Dann, weil viele verschiedene Fehler ich auf Swift 2.3 herabgestuft. Jetzt habe ich diesen Fehler, den ich nicht lösen kann. Weiß jemand, warum ich diesen Fehler bekomme?"falls case" - Variable Bindung in einer Bedingung erfordert einen Initialisierer

Variable binding in a condition requires an initializer

Dies ist die Funktion Ich verwende:

func credentials(values: [String: String], callback: Result<Credentials> ->()) { 
    guard 
     let code = values["code"] 
     else { 
      let data = try! NSJSONSerialization.dataWithJSONObject(values, options: []) 
      let string = String(data: data, encoding: NSUTF8StringEncoding) 
      return callback(.Failure(error: AuthenticationError(string: string))) 
     } 
    let clientId = self.clientId 
    Authentication(clientId: clientId, url: url) 
     .tokenExchange(withCode: code, codeVerifier: verifier, redirectURI: redirectURL.absoluteString!) 
     .start { result in 
      // error is in if-case below: 
      if case .Failure(let cause as AuthenticationError) = result, cause.description == "Unauthorized"{ 

       let error = WebAuthError.PKCENotAllowed("Please go to 'https://manage.auth0.com/#/applications/\(clientId)/settings' and set 'Token Endpoint Authentication Method' to 'None' to enable PKCE.") 
       callback(Result.Failure(error: error)) 
      } else { 
       callback(result) 
      } 
     } 
} 
+0

Der Fehler bedeutet, dass der zugehörige Wert 'cause' nicht als gebundene Variable verwendet werden kann. Verwenden Sie "wenn Fall lassen" – vadian

+0

@ Vadian danke für Ihre Hilfe. Ich benutze bereits "Let", wenn ich eine 'cause'-Variable erstelle ... und wenn ich' let' neben 'if case' setze, bleibt der Fehler gleich ... vielleicht habe ich Ihren Punkt nicht bekommen – guijob

+0

Dies ist mein erstes schnelles Projekt, mit dem ich nicht vertraut bin – guijob

Antwort

3

Vielleicht

let cause as AuthenticationError 

zu

let cause = cause as AuthenticationError 

Ich hatte ein ähnliches Problem zu ändern versuchen, das hat es für mich gelöst.

Verwandte Themen