Подтвердить что ты не робот

Xcode/Swift 'имя файла используется дважды' ошибка сборки

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

Ошибка следующая.

<unknown>:0: error: filename "MainController.swift" used twice: '/Users/myname/Desktop/ProjectName/ProjectName/Controllers/MainController.swift' and '/Users/myname/Desktop/ProjectName/ProjectName/Controllers/MainController.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

Насколько я могу собрать с других форумов и, по-видимому, очевидно, что мне нужно удалить один из файлов, которые используются дважды. Однако я не вижу, где они будут установлены дважды. Если я удалю файл из папки /Controllers, ошибка станет "файл не найден" и т.д.

Итак, мой вопрос: где будут расположены эти конфликтующие файлы и как я могу безопасно удалить один из них? Или это более того, что есть только один файл, но он используется дважды - в этом случае, как это остановить?

Большое спасибо.


Хорошо, я чувствую, что комментарии теряются, поэтому я проясняю здесь, чтобы узнать, может ли это вызвать ответ, поскольку он не смог построить и запустить его со вчерашнего дня.

Теперь у меня есть только быстрые файлы в папке Pods- > Pods/MainController.

Когда я строю, я получаю файл не найден. Однако файл, который он ищет, находится в папке App- > Controllers, с которой я его удалил. Если я помещаю файл туда, я получаю ошибку "дважды".

Итак, как мне его остановить, пытаясь найти файл в контроллерах и искать его в Pods?

Спасибо

4b9b3361

Ответ 1

Попробуйте выполнить поиск, если вы дважды добавили тот же ViewController - MainController.swift.

Если нет, то выполните поиск class MainController в базе кода.

Что касается Pods, предпочтительно использовать все Pods в качестве фреймворков,

Поэтому попробуйте использовать 'use_frameworks!' в Podfile, а затем от терминала переустановите контейнеры "pod install".

Ответ 2

Проверьте, что файл не включен дважды в настройки "Сборка фаз" "Скомпилировать источники". Это может произойти при объединении project.pbxproj.

Ответ 3

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

В Data Model Inspector измените "Module" на "Current Product Module" и "Codegen" на "Manual/None".
введите описание изображения здесь

Ответ 4

Основная идея... да, проверьте дублированные классы. Но в моем случае у меня их не было. У меня был большой проект, добавлен WatchKit, множество вещей, и в какой-то момент у меня был "дублированный" класс. Я удалил дубликат, но проблема осталась. Чтобы исправить это, я сделал следующее:

  • Прежде всего сделайте резервную копию файла-нарушителя в папке вне вашего проекта.
  • Удалить дубликат файла, а начальный файл
  • Для каждой из ваших целей: перейдите в раздел "Сборка фаз" и удалите ВСЕ упоминания проблемного файла.
  • Добавьте файл снова в свой проект и Voila!

Ответ 5

Я столкнулся с этой проблемой, удалив использованный файл дважды из источников компиляции, как показано на рисунке ниже. Выберите файл и нажмите -. Затем очистите и постройте.

enter image description here

Ответ 6

Это может быть в вашем проекте project.pbxproj, когда вы делаете слияние с github или аналогичным инструментом.

Это может быть исправление, открывающее project.pbxproj в вашем любимом текстовом редакторе и удаление деклараций дубликатов.

Надеюсь, что исправить вашу проблему.

Ответ 7

Я бы добавил к Джошу О'Коннерсу ответ, что внесение изменений, которые он рекомендовал, стало причиной моей проблемы. Мне нужно было очистить папку сборки, нажав shift-option-command-k, чтобы завершить исправление.

Ответ 8

Чтобы проверить, включен ли файл в исходники компиляции дважды, без прокрутки сотен мух, сделайте следующее:

  • выберите файл в Xcode
  • перейдите в инспектор файлов на правой панели (верхний левый значок)
  • снимите флажок и снова отметьте целевой флажок

enter image description here

Ответ 9

В случае кода модели классов данных. Выберите модель данных кода, затем выберите Entity, измените значение Codegen на Manual/None.

Это помогает мне.