Ошибка компилятора Xcode не выделена в редакторе

Xcode начал отображать ошибку компилятора, как только я открываю свой проект (т.е. сборка не требуется), но все это немного странно. На вкладке времени сборки отображается одна ошибка, но когда я открываю окно сообщения компилятора, появляются три идентичные ошибки, распределенные по нескольким файлам. Ошибки не выделены в окне редактора, поэтому я не могу их отследить, но поскольку они помечены в файлах, к которым я не прикасался в последнее время, я подозревал, что проблема связана с Xcode, а не с моим кодом.

Ошибка отображается в окне времени сборки как:

Swift Compiler Error - cannot convert value of type '()' to closure result type 'Observable<Void>'

В окне сообщений:

<unknown>:0: error: cannot convert value of type '()' to closure result type 'Observable<Void>'

Эти ошибки распределены по трем файлам в окне сообщений, каждый из которых использует по крайней мере одну зависимость RxSwift (RxDataSources, RxSwift и RxCocoa), и, как отмечалось выше, я не трогал пару из них в течение недели или двух и мои зависимости не были недавно изменены, поэтому я могу быть уверен, что проблема не в них.

Я сделал все как обычно (очистка, очистка кеша, перезагрузка, проверка настроек отображения ошибок, откат к более ранней версии, обновление зависимостей, переустановка Xcode), но ошибка сохраняется, и я фактически заблокирован от дальнейшей разработки, пока не смогу решить это. Сказать, что я расстроена, это ничего не сказать!

Я запускаю Xcode 10.2.1 (10E1001) Помогите!!


person rustproofFish    schedule 22.05.2019    source источник
comment
Вы обновили Xcode? Если это так, убедитесь, что вы используете последнюю версию Carthage (0.33.0). Это может не иметь отношения к вашей проблеме, но странная ошибка компиляции в моем проекте была исправлена ​​с использованием последней версии carghage.   -  person pompopo    schedule 22.05.2019
comment
Все использует последнюю версию, но я переустановил их на всякий случай. К сожалению, радости нет :-(   -  person rustproofFish    schedule 22.05.2019


Ответы (1)


Я разобрал приложение, а затем добавил в каждый класс по отдельности, пока ошибка не выскочила снова. Проблема заключалась в опечатке (синтаксической ошибке) в структуре модели представления, а именно в строке:

let editTapped = CocoaAction { return }

что должно было быть:

let editTapped = CocoaAction {
    // do stuff
    return .empty()
}

Я предполагаю, что неспособность компилятора выделить ошибку в панели редактора является ошибкой, поэтому я сообщу об этом (если только у кого-то нет противоположного мнения?), поскольку на ее устранение ушло очень много времени. Странным было то, что откат к предыдущей рабочей версии не помог — мне пришлось удалить все приложение, а затем перестроить его с нуля вручную, добавляя файлы по ходу дела. Странный...

person rustproofFish    schedule 24.05.2019