Получение "использования необъявленного типа" NoError "с помощью ReactiveCocoa
Я пытаюсь изучить ReactiveCocoa и нелегко начать работу. Я продолжаю сталкиваться с незначительными ударами, поскольку API и учебники, кажется, устарели быстро. Возможно, у меня неправильное впечатление.
Просто пытаюсь выполнить this У меня, похоже, нет NoError
.
![введите описание изображения здесь]()
Он должен быть импортирован правильно, так как у меня есть доступ к Signal
, rac_textSignal
и т.д., но я не знаю, почему NoError недоступен.
Их documentation упоминает NoError
, но это приводит к 404.
Этот переход к RAC4 упоминает NoError
. Почему NoError
необъявленный? Я использую ReactiveCocoa 4.0.1.
Изменить: я просто добавил public enum NoError : ErrorType {}
в начало файла, и теперь он работает. Я не уверен, что это правильное решение проблемы. В руководствах и учебниках не упоминается, что я должен расширить ErrorType
себя.
Ответы
Ответ 1
Реактивный cocoa native NoError
был удален в 4.0.1 в пользу antitypicals в Result
(добавляет NoError
до Result
, см. this). См. выпуск № 2704
Мы можем видеть, что это явно используется в исходных файлах, например
Следовательно, вы, вероятно, должны включать (antitypicals) Result
всякий раз, когда вы собираетесь использовать NoError
. Одно из рекомендуемых исправлений в теме проблемы -
public typealias NoError = Result.NoError
Ответ 2
Если вы добавите "Импорт результатов" в начало страницы над вашим классом, NoError больше не будет незадекларированным типом!
Ответ 3
Если вы видите это сейчас с ReactiveSwift 6.0, они удалили зависимость от Result, которая удаляет NoError
.
Согласно их примечаниям к выпуску, решение состоит в том, чтобы теперь использовать Never
- Если вы использовали Result только как зависимость ReactiveSwift, удалите все экземпляры импорта Result, импортируйте enum Result.NoError или импортируйте struct Result.AnyError и удалите Result Framework из своего проекта.
- Замените все случаи, когда NoError использовался в Signal или SignalProducer, с Never
Следующий пример кода показывает, как это должно выглядеть сейчас:
import ReactiveSwift
func example() -> SignalProducer<Void, Never> {
return SignalProducer(value: ())
}