我有一个可获取用户当前位置的类,并且我希望能够将最近获取的CLLocation
或Error
传递给SwiftUI
{{1} }。
下面是负责位置提取的类:
View
当我使用class LocationProvider: NSObject, BindableObject, CLLocationManagerDelegate {
// MARK: - BindableObject
var willChange = PassthroughSubject<CLLocation, Error>()
// MARK: - CLLocationManagerDelegate
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
willChange.send(location)
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
willChange.send(completion: .failure(.unknown))
}
}
作为失败类型时,出现以下编译错误:Type 'LocationProvider' does not conform to protocol 'BindableObject'
。但是,如果我将Error
更改为Error
,则文件将成功编译。
我需要更改什么才能通过Never
或CLLocation
?
答案 0 :(得分:0)
BindableObject的willChange
必须中的发布者类型的错误类型为“从不”。如果那不是您想要的,则不能在此处使用简单的BindableObject的willChange
。
可能之后的状态是可绑定的对象,其发布者将发布结果。可以包含位置或错误,如果您明白我的意思,则可以在管道中进一步处理它。