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

SwiftUI Combine 如何在AnyPublisher中设置并返回元组类型值

问题解答

  • Just完全支持直接发送元组类型数据:Combine的Just发布者的输出类型为泛型,支持所有合法Swift类型,包括元组,仅需构造Just时传入和函数声明的输出类型匹配的元组即可。
  • 你当前代码的问题:函数声明的返回值是输出为(EKAuthorizationStatus, EKAuthorizationStatus)元组的发布者,但现有代码中所有返回的Just都仅传入了单个EKAuthorizationStatus类型的值,类型不匹配会触发编译错误。

修正后的参考代码如下:

func returnedPermisionReminderAuthorizationStatus(reminderPermission: EKAuthorizationStatus, calendarPermission: EKAuthorizationStatus) -> AnyPublisher<(EKAuthorizationStatus, EKAuthorizationStatus), Never> {
    var reminderPermissionToPass: EKAuthorizationStatus =  .notDetermined
    var calendarPermissionToPass: EKAuthorizationStatus =  .notDetermined
    
    // 处理提醒事项权限
    switch reminderPermission {
    case .notDetermined:
        reminderPermissionToPass = .notDetermined
    case .restricted:
        reminderPermissionToPass = .restricted
    case .denied:
        reminderPermissionToPass = .denied
    case .authorized:
        reminderPermissionToPass = .authorized
    @unknown default:
        reminderPermissionToPass = .notDetermined
    }

    // 如需处理日历权限可在此处补充对应逻辑,修改calendarPermissionToPass的值即可

    // 构造携带元组的Just并类型擦除后返回
    return Just((reminderPermissionToPass, calendarPermissionToPass)).eraseToAnyPublisher()
}

内容的提问来源于stack exchange,提问作者user13485448

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:12:04