wake-up-neo.net

Mehrdeutiger Verweis auf Member Swift 3

Ich migriere mein Projekt von Swift 2.3 auf Swift 3. Und habe Schwierigkeiten, wie erwartet. 

Hier ist eine Funktion, die für OAuth verwendet wird, indem OAuthSwift verwendet wird. Ich habe versucht zu konvertieren

class func OAuthSwiftAuthorization(inViewController viewController: UIViewController, withOAuthInfo info:FitnessTracker, successHandler:@escaping MyOAuthNewSuccessHandler, failure: @escaping ((_ error: NSError) -> Void)) {

    let oauthswift = OAuth2Swift(
        consumerKey:    info.consumerKey,
        consumerSecret: info.consumerSecret,
        authorizeUrl:   info.authorizeUrl,
        accessTokenUrl: info.accessTokenUrl,
        responseType:   info.responseType
    )

    oauthswift.authorizeURLHandler = SafariURLHandler(viewController: viewController, oauthSwift: oauthswift)
    oauthswift.accessTokenBasicAuthentification = true
    oauthswift.allowMissingStateCheck = true

    oauthswift.authorize(withCallbackURL: URL(string: info.callBackUrl)!, scope: info.scope, state: info.state, success: { (credential, response, parameters) in

             successHandler(credential, response, parameters)
    }) { (error) in

        failure(error: error)
        print(error.localizedDescription)
    }
}

Aber ich bekomme einen Fehler 

oauthswift.authorize(withCallbackURL: URL(string: info.callBackUrl)!, scope: info.scope, state: info.state, success: { (credential, response, parameters) in

Fehlerzustände

Mehrdeutiger Verweis auf Member 'authorize (withCallbackURL: scope: state: parameters: header: success: failure :)'

Hier ist der Arbeitscode von Swift 2.

    oauthswift.authorizeWithCallbackURL(
        URL(string: info.callBackUrl)!,
        scope: info.scope, state:info.state,
        success: { credential, response, parameters in

            successHandler(credientials: credential, response: response, params: parameters)
        },
        failure: { error in

            failure(error: error)
            print(error.localizedDescription)
        }
    )

UPDATE:

Fehler erscheint nicht, bis ich Erfolg und falsche Handbücher eingebe. Dies entspricht gut:

        oauthswift.authorize(withCallbackURL: URL(string: info.callBackUrl)!, scope: info.scope, state: info.state, success: { (credential, response, parameters) in
        // successHandler(credential, response, parameters)
    }) { (erorr) in
        // failure(error: error
    }

Also bitte führe mich Danke.

11
Umair Afzal

Ich denke, das Problem wird durch einige Mängel des Swift-Typenschlusses in Kombination mit Schließungen verursacht .. Sie könnten eine der folgenden Möglichkeiten ausprobieren:

Verwenden Sie entweder keine nachlaufenden Verschlüsse, z.

oauthswift.authorize(withCallbackURL: URL(string: info.callBackUrl)!, scope: info.scope, state: info.state, success: { (credential, response, parameters) in

         successHandler(credential, response, parameters)
}, failure: { (error) in

    failure(error: error)
    print(error.localizedDescription)
})

oder einen expliziten Typ für Fehler angeben, z.

 oauthswift.authorize(withCallbackURL: URL(string: info.callBackUrl)!, scope: info.scope, state: info.state, success: { (credential, response, parameters) in

         successHandler(credential, response, parameters)
 }) { (error: Error) in

     failure(error: error)
     print(error.localizedDescription)
 }
12
Andreas Oetjen

Ich habe den gleichen Fehler mehrdeutiger Verweis auf das Mitglied mit der gleichen Methode beim Konvertieren von Swift 4 in Swift 5. Sieht aus wie die Vervollständigung Der Handler wurde geändert, um den neuen Result -Typ zu unterstützen. Das Problem wurde für mich behoben, indem der vervollständigende Handler in "below" geändert wurde.

        oauthVarSwift.authorize( withCallbackURL: URL(string: "")!,
                             scope: "", state:"", completionHandler: {  result in
                                switch result {
                                case .success(let credential, let response,  let parameters):
                                    print(credential.oauthToken)

                                case .failure(let error):
                                 print(error)
                                }

          })
1
yaali

Als Referenz: Diese Art von Fehler tritt auf, wenn es mehr als eine Variable/Methode mit demselben Namen gibt. Hat Ihre oauthswift mehr als eine "Sache", die als "autorisieren" bezeichnet wird? wie eine andere Methode? Mein Fehler war, dass ich erklärte:

let fileManager = FileManager()

und in 

let _ = try localFileManager.createDirectory(...) 

Ich habe den gleichen Fehler erhalten und den Variablennamen in localFileManager geändert.

0
Kappe