- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在覆盖 ReSwift Pod 中的函数时遇到问题。我有以下模拟类(class):
import Foundation
import Quick
import Nimble
import RxSwift
@testable import MainProject
@testable import ReSwift
class MockReSwiftStore: ReSwift.Store<MainState> {
var dispatchDidRun: Bool = false
var subscribeWasTriggered: Bool = false
init() {
let reducer: Reducer<MainState> = {_, _ in MainState() }
super.init(reducer: reducer, state: nil)
}
required init(
reducer: @escaping (Action, State?) -> State,
state: State?,
middleware: [(@escaping DispatchFunction, @escaping () -> State?) -> (@escaping DispatchFunction) -> DispatchFunction]) {
super.init(reducer: reducer, state: state, middleware: middleware)
}
override func subscribe<SelectedState, S>(
_ subscriber: S,
transform: ((Subscription<MainState>) -> Subscription<SelectedState>)?)
where S: StoreSubscriber,
S.StoreSubscriberStateType == SelectedState {
subscribeWasTriggered = true
}
}
}
并且在重写订阅方法时出现以下错误
然而,当寻找原始功能时,只有一个看起来像这样
open func subscribe<SelectedState, S: StoreSubscriber>(
_ subscriber: S, transform: ((Subscription<State>) -> Subscription<SelectedState>)?
) where S.StoreSubscriberStateType == SelectedState
{
// Create a subscription for the new subscriber.
let originalSubscription = Subscription<State>()
// Call the optional transformation closure. This allows callers to modify
// the subscription, e.g. in order to subselect parts of the store's state.
let transformedSubscription = transform?(originalSubscription)
_subscribe(subscriber, originalSubscription: originalSubscription,
transformedSubscription: transformedSubscription)
}
我没有想法所以非常感谢任何帮助谢谢!
最佳答案
这是您的问题:
class Some<T> {
func echo() {
print("A")
}
}
extension Some where T: Equatable {
func echo() {
print("B")
}
}
class AnotherSome: Some<String> {
override func echo() {
print("Doesn't compile")
}
}
问题是:ReSwift 开发人员将 Store.subscribe
行为声明为接口(interface)的一部分和扩展的一部分(我不确定他们为什么选择这样做而不是引入其他对象)。 Swift 无法确定您要覆盖的部分,因此无法编译。据我所知,没有可以让您解决此问题的语言工具。
一个可能的解决方案是将 MockStore
实现为 StoreType
并使用 Store
对象来实现 StoreType
的行为界面。
关于ios - 声明 'subscribe' 不能覆盖多个父类(super class)声明 (ReSwift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48441920/
如何使用 ReSwift 从数据库加载初始应用状态? 我在想一个类似中间件的东西,当应用程序状态第一次被初始化时,即第一次调用 reducer 时。 最佳答案 我认为解决方案是中间件。 意思是,你可以
我在我的项目中使用 ReSwift 来获得一个漂亮干净的 redux 架构。 因为我对整个状态不感兴趣,所以我只为我的 View Controller 订阅了两个子状态: extension View
我正在尝试使用 ReSwift 在我的 iOS 应用程序中应用 Redux ,但我仍然有一些 Unresolved Redux 问题。 1) 如何处理在动画中间接收状态更新?例如:说发生了一些状态变化
我正在尝试在我的 ios 项目中使用 ReSwift,并且有一个关于如何处理我的 View 更改的问题。我发现我需要知道旧状态是什么,然后才能应用新状态提出的更改。在我的 react 项目中使用 re
我们使用了 ReSwift在一些 iOS 项目中,并且一直很喜欢它。在 4.0 ,他们添加了子选择部分状态和 skipRepeats 的功能,可以手动或使用 Equatable 的存储。子选择商店很简
我们如何使用带参数的 ReSwift 调度异步操作? 我创建了这个异步操作: func searchItems(state: AppState, store: Store) -> Action? {
我正在使用 ReSwift和 RxSwift (如果没有这些信息,这个问题就没有多大意义)。 是否有一种标准方法可以在 ReSwift 中分派(dispatch) action creator 并在它
我在覆盖 ReSwift Pod 中的函数时遇到问题。我有以下模拟类(class): import Foundation import Quick import Nimble import RxSwi
我是一名优秀的程序员,十分优秀!