简体   繁体   中英

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

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 impression.

Just trying to follow this I do not seem to have NoError .

在此输入图像描述

It should be imported correctly, since I have access to Signal , rac_textSignal etc. but I don't know why NoError is not available.

Their documentation mentions NoError as well but that leads to a 404 .

This transition to RAC4 mentions NoError as well. Why is NoError undeclared? I am using ReactiveCocoa 4.0.1.

Edit: I just added public enum NoError : ErrorType {} to the top of the file and it works now. I am not sure if this is a proper solution to the problem though. It is not mentioned in guides and tutorials that I should extend ErrorType myself.

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 eg issue #2704

We can see this explicitly used in the source files, eg

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

如果将“导入结果”添加到类上方页面的顶部,NoError将不再是未声明的类型!

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: ())
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM