Swift中使用AppAuth-iOS库声明变量及OC代码转Swift需求
在Swift项目中使用Objective-C版AppAuth的实现指南
嘿,这就帮你搞定在Swift项目里用Objective-C版AppAuth的这两个需求:
1. 声明OIDAuthorizationService类型的变量
在Swift中可以直接使用Objective-C库的类型,根据你的使用场景,有两种常见的声明方式:
类属性(比如在AppDelegate或认证管理类中)
// 声明为可选类型,方便后续动态赋值 var authorizationService: OIDAuthorizationService?
使用库提供的单例实例
如果需要用OIDAuthorizationService的全局单例,直接这样声明调用:
// 局部变量或类属性都适用 let authService = OIDAuthorizationService.shared()
2. Objective-C代码片段转Swift
先看你给出的Objective-C原代码片段:
@protocol OIDAuthorizationFlowSession; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property(nonatomic, strong, nullable) id<OIDAuthorizationFlowSession> currentAuthorizationFlow; @property (nonatomic...
转换后的Swift代码如下,同时补充必要的配置说明:
import UIKit // 重要前提:确保你已经配置了Objective-C桥接文件,在桥接文件中添加 #import <AppAuth/AppAuth.h> class AppDelegate: UIResponder, UIApplicationDelegate { // 对应原Objective-C中的currentAuthorizationFlow属性 // Swift自动将Objective-C的nullable映射为可选类型(?) var currentAuthorizationFlow: OIDAuthorizationFlowSession? // 这里可以继续补充原代码中未写完的其他属性或AppDelegate生命周期方法 }
关键注意点:
- 必须配置Objective-C桥接文件:Swift项目调用Objective-C库时,桥接文件是必要的,没有它Swift无法识别AppAuth的各类协议和类。
- 类型映射逻辑:Objective-C中的
id<OIDAuthorizationFlowSession>在Swift中直接对应OIDAuthorizationFlowSession协议类型,加上nullable修饰符后就变成可选类型OIDAuthorizationFlowSession?。
内容的提问来源于stack exchange,提问作者Paul Brittain
相关产品推荐
相关产品推荐

