Getting “use of undeclared type 'NoError'” with ReactiveCocoa

后端 未结 3 807
情深已故
情深已故 2021-02-05 16:12

I am trying to learn ReactiveCocoa and have a hard time getting started. I keep hitting minor bumps as API and tutorials seems to be outdated quickly. Maybe I have the wrong imp

相关标签:
3条回答
  • 2021-02-05 16:37

    If you add "import Results" to the top of the page above your class, NoError will no longer be an undeclared type!

    0 讨论(0)
  • 2021-02-05 16:45

    If you are seeing this now with ReactiveSwift 6.0, they removed the dependency on Result, which removes NoError.

    Per their release notes here, the solution is to now use Never.

    • If you have used Result only as dependency of ReactiveSwift, remove all instances of import Result, import enum Result.NoError or import struct Result.AnyError and remove the Result Framework from your project.
    • Replace all cases where NoError was used in a Signal or SignalProducer with Never

    The following example code shows how this should look now:

    import ReactiveSwift
    
    func example() -> SignalProducer<Void, Never> {
        return SignalProducer(value: ())
    }
    
    0 讨论(0)
  • 2021-02-05 16:50

    The reactive cocoa native NoError was removed in 4.0.1 in favour of antitypicals implementation in Result (adds NoError to Result, see this). See e.g. issue #2704

    • https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2704

    We can see this explicitly used in the source files, e.g.

    • import enum Result.NoError in Property.swift.

    Hence, you probably need to include (antitypicals) Result whenever you intend to use NoError. One suggested fix in the issue thread is

    public typealias NoError = Result.NoError
    
    0 讨论(0)
提交回复
热议问题