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