Я переношу свой проект с Swift 2.3 на Swift 3. И с трудом, как ожидалось.Неоднозначная ссылка на члена Swift 3
Это функция, которая используется для OAuth, используя OAuthSwift. Я попытался преобразовать
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)
}
}
Но я получаю сообщение об ошибке при
oauthswift.authorize(withCallbackURL: URL(string: info.callBackUrl)!, scope: info.scope, state: info.state, success: { (credential, response, parameters) in
состояний ошибок
Неоднозначности ссылки на член «авторизовать (withCallbackURL: область применения: состояние: параметры: заголовки : success: failure :) '
Вот рабочий код от Swi фут 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:
Ошибка не появляется unitil I типа успеха и faliure handelrs. Это соответствует штрафу:
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
}
Так что, пожалуйста, помогите мне. Спасибо.
Не использовать задние крышки сделал трюк. Но я не понимаю, почему! –
Это недостаток, см. Здесь: https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160704/002370.html –