[英]Objective-C AppAuth OIDAuthorizationService class in Swift, and Objective-C -> Swift translation
我需要在Swift
從AppAuth
( https://github.com/openid/AppAuth-iOS )庫中聲明類型為OIDAuthorizationService
的變量,同時將以下Objective-C
為Swift
以在AppAuth
中使用Objective-C
庫項目。
預翻譯目標
。H
+ @protocol OIDAuthorizationFlowSession;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
+ @property(nonatomic, strong, nullable)
id<OIDAuthorizationFlowSession> currentAuthorizationFlow;
@property (nonatomic, strong) UIWindow *window;
@end
.m
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *, id> *)options {
if ([_currentAuthorizationFlow resumeAuthorizationFlowWithURL:url]) {
_currentAuthorizationFlow = nil;
return YES;
}
return NO;
}
到目前為止,我的翻譯如下:
var currentAuthorizationFlow: OIDAuthorizationFlowSession?
...
func application(_ application: UIApplication, openURL: NSURL,
didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if currentAuthorizationFlow!.resumeAuthorizationFlow(with: openURL as URL) {
return true
}
return false
}
此代碼正確嗎?
錯誤是: Use of undeclared type: 'OIDAuthorizationFlowSession'
,如所期望的, 我該怎么做?
非常感激
我知道OIDAuthorizationFlowSession協議是在Objective-C中定義的,並且您正在嘗試在Swift中使用它,如果是這種情況,則需要Bridging-Header.h,可以在其中導入OIDAuthorizationFlowSession的相應標頭。
如何創建橋接頭文件? 好吧,當您創建新的swift文件時,應該自動創建它,如果不是這種情況,請在此處查看: https : //developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
如果簡單方法不起作用,請參閱以下內容: Xcode是否不會自動創建橋接頭?
LE:如果您將AppAuth-iOS集成為Pod,這就是100%有效的方法:
import UIKit
import AppAuth
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var currentAuthorizationFlow: OIDAuthorizationFlowSession?
func application(_ application: UIApplication, openURL: NSURL,
didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if currentAuthorizationFlow!.resumeAuthorizationFlow(with: openURL as URL) {
return true
}
return false
}
因此,請不要忘記“導入AppAuth”部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.