You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode15下M1设备Moya/RxSwift报错:无法调用非函数类型'[Observable<Event>.Type]'

解决Moya/RxSwift中Cannot call value of non-function type '[Observable<Event>.Type]'报错

环境信息

  • 设备:MacBook M1
  • 开发工具:Xcode 15
  • 依赖版本:Moya/RxSwift 15.0.0(依赖Moya/Core、RxSwift ~>6.0)

报错信息

Cannot call value of non-function type '[Observable.Type]'

报错代码

private func bindingsStrongify<Event, O, WeakOwner>(_ owner: WeakOwner, _ bindings: @escaping (WeakOwner, O) -> (Bindings<Event>))
    -> (O) -> (Bindings<Event>) where WeakOwner: AnyObject {
    return { [weak owner] state -> Bindings<Event> in
        guard let strongOwner = owner else {
            return Bindings(subscriptions: [], events: [Observable<Event>]())
        }
        return bindings(strongOwner, state)
    }
}

问题原因

报错出现在return Bindings(subscriptions: [], events: [Observable<Event>]())这行代码中:在当前Xcode 15和RxSwift 6的环境下,编译器错误地将[Observable<Event>]推断为[Observable<Event>.Type](即Observable类型的数组),而非Observable<Event>实例的数组,导致尝试调用类型作为函数时触发报错。

解决方案

将报错行中的[Observable<Event>]()替换为空数组[],利用Swift的类型推断自动匹配events参数所需的[Observable<Event>]类型。修改后的代码如下:

private func bindingsStrongify<Event, O, WeakOwner>(_ owner: WeakOwner, _ bindings: @escaping (WeakOwner, O) -> (Bindings<Event>))
    -> (O) -> (Bindings<Event>) where WeakOwner: AnyObject {
    return { [weak owner] state -> Bindings<Event> in
        guard let strongOwner = owner else {
            return Bindings(subscriptions: [], events: [])
        }
        return bindings(strongOwner, state)
    }
}

若需要明确指定数组类型,也可以写成events: Array<Observable<Event>>(),不过推荐使用更简洁的[]。

内容的提问来源于stack exchange,提问作者Duncan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:27:45