【发布时间】:2022-01-04 00:43:22
【问题描述】:
我是一家公司的新手,正在尝试了解使用过的仿制药。模型的设置包含
var selectedChannel: Driver<Channel> { get }
@available(*, deprecated, message: "Use driver selectedChannel")
var selectedChannelValue: Channel { get }
在代码中的某个时刻使用了selectedChannelValue.id,但它显示了警告消息Use driver selectedChannel。我明白这一点。好的,它仍然可以完成这项工作,但之前的一位程序员出于某种原因弃用了它。
如何重写代码行,以便我得到selectedChannel.id,正如弃用消息所暗示的那样?当我使用selectedChannel.id 时,会出现错误消息Value of type 'Driver<Channel>' (aka 'SharedSequence<DriverSharingStrategy, Channel>') has no member 'id'。如何解开SharedSequence?
编辑:
channel 结构如下所示:
public struct Channel: Codable {
public let id: String // e.g. "1111111"
driver 在RxCocoa 中设置为:
public typealias Driver<Element> = SharedSequence<DriverSharingStrategy, Element>
public struct DriverSharingStrategy: SharingStrategyProtocol {
public static var scheduler: SchedulerType { return SharingScheduler.make() }
public static func share<Element>(_ source: Observable<Element>) -> Observable<Element> {
return source.share(replay: 1, scope: .whileConnected)
}
}
extension SharedSequenceConvertibleType where SharingStrategy == DriverSharingStrategy {
/// Adds `asDriver` to `SharingSequence` with `DriverSharingStrategy`.
public func asDriver() -> Driver<Element> {
return self.asSharedSequence()
}
}
【问题讨论】:
-
如果不了解 Driver 和 Channel 类型的样子,就不可能说出来。我会假设类似于 selectedChannel.channel.id 但这是一个猜测。
标签: swift generics typescript-generics rx-swift rx-cocoa