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?
Спасибо
Ответы
Ответ 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.
Это помогает мне.