You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:28:40