Ich versuche, retrieveData() aufzurufen, wenn ein Benutzer eine Schaltfläche drückt.Rufen Sie eine geschachtelte Funktion in Swift mit einer Schaltfläche
extension ViewController {
func doOAuthFitbit2() {
let oauthswift = OAuth2Swift(
consumerKey: "*****",
consumerSecret: "*****",
authorizeUrl: "https://www.fitbit.com/oauth2/authorize",
accessTokenUrl: "https://api.fitbit.com/oauth2/token",
responseType: "code"
)
oauthswift.accessTokenBasicAuthentification = true
oauthswift.authorizeURLHandler = getURLHandler()
let state = generateState(withLength: 20)
let _ = oauthswift.authorize(
withCallbackURL: URL(string: "smart://oauth-callback")!,
scope: "profile nutrition",
state: state,
success: { credential, response, parameters in
self.retrieveData(oauthswift)
},
failure: { error in
print(error.description)
}
)
}
func retrieveData(_ oauthswift: OAuth2Swift) {
print("retrieveData")
let _ = oauthswift.client.get(
"https://api.fitbit.com/1/user/-/profile.json",
parameters: [:],
success: { response in
let jsonDict = try? response.jsonObject()
print(jsonDict as Any)
},
failure: { error in
print(error.description)
}
)
}
}
Ich habe folgendes in ViewController.swift
@IBAction func btnRetrieveData(_ sender: Any) {
retrieveData(oauthswift)
}
ich die folgende Fehlermeldung erhalten:
Cannot convert value of type 'OAuthSwift?' to expected argument type 'OAuth2Swift'
Welche Ich gehe davon aus, weil "oauthswift" innerhalb des doOAuthFitbit2 deklariert wird() Funktion.
Muss ich den Code umgestalten, damit die Funktion retrieveData() in der Funktion doOAuthFitbit2() verschachtelt wird? Wie würde ich das in ViewController.swift nennen?