【发布时间】:2021-08-10 17:19:33
【问题描述】:
早安社区,
我有一个很好的问题,我尝试在一个项目中实施,但我需要结合一些新的东西 我想做一个函数来检查一些权限,但是我想返回一个 AnyPublisher 里面有一个元组,有人可以帮我做这件事或知道怎么做吗?
我把我的代码放在下面。
func returnedPermisionReminderAuthorizationStatus(reminderPermission:EKAuthorizationStatus,calendarPermission:EKAuthorizationStatus) -> AnyPublisher<(EKAuthorizationStatus,EKAuthorizationStatus),Never>{
var reminderPermissionToPass:EKAuthorizationStatus = .notDetermined
var calendarPermissionToPass:EKAuthorizationStatus = .notDetermined
switch (reminderPermission){
case .notDetermined:
return Just(reminderPermissionToPass).eraseToAnyPublisher()
case .restricted:
reminderPermissionToPass = .restricted
return Just(reminderPermissionToPass).eraseToAnyPublisher()
case .denied:
reminderPermissionToPass = .denied
return Just(reminderPermissionToPass).eraseToAnyPublisher()
case .authorized:
reminderPermissionToPass = .authorized
return Just(reminderPermissionToPass).eraseToAnyPublisher()
@unknown default:
reminderPermissionToPass = .notDetermined
return Just(reminderPermissionToPass).eraseToAnyPublisher()
}
}
是否可以在just中发送一个元组?
【问题讨论】:
-
用 Just 传递一个元组是完全可以的。但是在您的代码中,您返回的是单个 EKAuthorizationStatus 值,而不是元组(该函数期望返回一个元组)。更改它们以返回一个元组,例如
Just((.notDetermined, .notDetermined)).eraseToAnyPublisher或任何它应该用于该案例的内容。 -
利用
Error类型而不是发送一个元组。例如,您可以在authorized上发送true,在notDetermined上发送false并在其他情况下发送错误。 -
同意@vaidan,状态和错误可能更有用。即使您可以发送两个状态的元组并且永不失败。
-
有关在组合管道头部检查授权的更好方法,请参阅stackoverflow.com/a/60418000/341994