Я столкнулся с этой проблемой вскоре после обновления до Xcode 10, но проблема была не в этом.
Я попытался изменить систему сборки, но это дало мне отдельную ошибку, которая означала то же самое. Обычно говорят: «Файл X не может быть найден».
Если файл не может быть найден, нужно проверить несколько вещей.
- Папка восстановленных ссылок Apple делает эту замечательную вещь: если она обнаруживает ссылку на несуществующий файл, она добавляет эту ссылку в группу под названием «Восстановленные ссылки».
Это хорошо со стороны Apple, но не всегда работает.
Этапы сборки Источники компиляции В этом списке могут быть метаданные для файла, который проект должен скомпилировать, но этот файл на самом деле не существует, и он пытается найти файл по заданному пути. В этом списке он будет затемнен, удалите их и снова добавьте, переключив целевые зависимости файла или вручную удалив и перетащив.
Путь к файлу. Дважды проверьте путь к файлу, в котором выводится ошибка, и путь к файлу в поисковике. Вы можете легко увидеть это, щелкнув файл в Xcode и проверив вкладку «Показать инспектор файлов» (крайняя левая вкладка). Если эти пути верны, то у вас все хорошо!
Затененные файлы в вашем проекте, которых нет в восстановленных ссылках или красных. Это меня разозлило, потому что неясно, что произошло, но в основном, если вы войдете в поисковик и переместите файл в другое место без обновления ссылки в проекте он выдаст ошибку, поскольку файл больше не существует. Единственное указание, которое я нашел для этого, заключается в том, что файл на вкладке «Project Navigator» (крайняя левая вкладка) очень немного затемнен, но когда вы идете, чтобы удалить этот файл, Xcode не предлагает вам удалить ссылку или отправить на мусор. Вы можете исправить это, удалив файл и повторно добавив его в проект или перейдя на вкладку «Инспектор файлов», щелкнув значок папки рядом с путем и изменив его на нужное место.
В любом случае ошибка указывает на то, что файл не может быть найден, переход на старую систему сборки - это бандаж для решения более конкретной проблемы. Мы, как разработчики, понимаем, что компилятор просто хочет, чтобы артефакт был указан в конце пути к файлу. Где-то путь не верный! Мы должны найти, где это!
Моя проблема была решена с помощью пункта 4, указанного выше. Надеюсь, это кому-то поможет.