[解決済み] メンバーであるSwift 3への言及があいまい
2022-02-19 01:13:59
質問
私はプロジェクトをSwift 2.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
エラー状態
<ブロッククオートメンバー 'authorize(withCallbackURL:scope:state:parameters:headers:success:failure:)' へのあいまいな参照。
以下は、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です。
successとfaliureを入力してもエラーが表示されない。これで問題ありません。
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
}
だから、私を導くくださいありがとうございます。
どのように解決するのですか?
この問題は、Swiftの型推論とクロージャの組み合わせに何らかの欠点があることが原因だと思います。 以下のいずれかを試してみてはいかがでしょうか。
末尾のクロージャを使わないか、例えば
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)
})
または、例えば、エラーのために明示的な型を提供します。
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)
}
関連
-
[解決済み] 'strcmp' はこのスコープで宣言されていません。
-
[解決済み] Xcode 10でコマンドCompileSwiftが0以外の終了コードで失敗する [重複] 。
-
[解決済み] 警告: 'characters' は非推奨です。String または Substring を直接使用してください。
-
[解決済み] 配列型 'int [16]' は代入不可能です。
-
[解決済み] CFBundleVersionとCFBundleShortVersionStringには、どのような値を使用すればよいですか?
-
[解決済み] Xcode 6: iOS 8.1 The Developer Disk Imageをマウントできませんでした。
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] Swift 3でディスパッチキューを作成する方法
-
[解決済み】Swift 3で遅延をプログラムする方法
-
[解決済み] Swift 3 URLSession.shared() メンバー 'dataTask(with:completionHandler:) エラーへのあいまいな参照 (バグ)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】iOS 9.0より前のUIStackView
-
[解決済み] リンカーコマンドが終了コード 1 で失敗した(起動を確認するには -v を使用)、Xcode 8、Swift 3
-
[解決済み] EXC_CORPSE_NOTIFY シンボルのクラッシュが発生しました、追跡するには?
-
[解決済み] UTF-8でエンコードされたNSDataをNSStringに変換します。
-
[解決済み] なぜibtoolはexit code 255で失敗したのでしょうか?
-
[解決済み] NSIntegerからNSStringデータ型に変換するにはどうすればよいですか?
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] viewDidLoad()は何のためにあるのですか?[重複]する
-
[解決済み] UILabelにスペース/パディングを追加する
-
[解決済み] Objective C - 値で渡す、参照で渡す