web-dev-qa-db-ja.com

Xcode / Swift「ファイル名が2回使用されました」ビルドエラー

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

私が他のフォーラムから収集できる限り、一見明らかなことは、2回使用されているファイルの1つを削除する必要があることです。ただし、それらが2回インストールされる場所を確認できません。/Controllersフォルダーからファイルを削除すると、エラーは「ファイルが見つかりません」などになります。

だから私の質問は、これらの競合するファイルはどこにあり、どのようにそれらの1つを安全に削除するのですか?または、ファイルが1つしかないのに2回使用されているということです。その場合、どうすれば停止できますか。

どうもありがとう。


コメントが失われていると思うので、昨日からこれを構築して実行することができなかったので、答えをトリガーできるかどうかをここで明確にします。

Pods-> Pods/MainControllerフォルダーにSwift=ファイルのみがあります。

ビルドすると、ファイルが見つかりません。しかし、探しているファイルは、App-> Controllersフォルダーにあり、そこから削除しました。ファイルをそこに入れると、「使用済み」エラーが表示されます。

コントローラでファイルを見つけてポッドで検索しようとするのを止めるにはどうすればよいですか?

ありがとう

37
RobertyBob

同じViewController-MainController.Swiftを2回追加した場合は、検索してみてください。

そうでない場合は、コードベースでclass MainControllerを検索します。

ポッドに関しては、すべてのポッドをフレームワークとして使用することをお勧めします。

Podfile'use_frameworks!'を使用してみてから、ターミナルからポッド "pod install"を再インストールしてください。

8
Ankit Thakur

ファイルがターゲットの「ビルドフェーズ」「ソースのコンパイル」設定に2回含まれていないことを確認します。 project.pbxprojをマージすると発生する可能性があります。

146
franck

これがコアデータに関連しており、ビルド時にXcodeでエンティティを生成しない(自分で手動で作成した)場合、この問題が発生している場合、.xcdatamodelldでエンティティの更新をチェックしなかった可能性がありますファイル。実行時にエンティティを生成するようにXcodeに指示したため、Xcodeは既存のクラスの複製クラスを作成します。

データモデルインスペクターで、[モジュール]を[現在の製品モジュール]に、[コード生成]を[手動/なし]に変更します。
enter image description here

79
Josh O'Connor

主なアイデアは...はい、重複したクラスをチェックします。しかし、私の場合は何もありませんでした。私は大きなプロジェクトを持っていて、WatchKitを追加し、多くのものを追加しました。ある時点で、「重複した」クラスがありました。重複を削除しましたが、問題は残りました。それを修正するために私はこれをしました:

  • まず、プロジェクト外のフォルダーに問題のあるファイルのバックアップを作成します。
  • 重複ファイルと初期ファイルを削除します
  • ターゲットごとに:ビルドフェーズに進み、問題のあるファイルに関するすべての言及を削除します。
  • ファイルをプロジェクトに再度追加すると、出来上がり!
11
Josh

次の画像のように、コンパイルされたソースから使用済みの2回ファイルを削除することで、この問題に遭遇しました。ファイルを選択し、[-]をクリックします。その後、きれいにしてビルドします。

enter image description here

9
Kris Roofe

これは、githubとマージするときに、project.pbxprojに含めることができますまたは同様のツール。

これは、お気に入りのテキストエディターでproject.pbxprojを開いて、重複宣言を削除を修正することができます。

問題が解決することを願っています。

Josh O'Connersの回答に追加するのは、彼が推奨した変更を加えることが私の問題の根本であるということです。修正を完了するには、shift-option-command-kを押してビルドフォルダーを消去する必要がありました。

3
Craig1481

何百ものハエをスクロールせずに、ファイルがコンパイルソースに2回含まれているかどうかを確認するには、次のようにします。

  • xcodeでファイルを選択
  • 右側のパネルのファイルインスペクターに移動します(左上のアイコン)
  • 対象のチェックボックスをオフにして再度チェックします

enter image description here

コードデータモデルクラスの場合。コードデータモデルを選択し、エンティティを選択して、「Codegen」の値をManual/Noneに変更します。

それは私に役立ちます。

0
Yogendra Singh