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
相关产品推荐
相关产品推荐

