IT アプリ開発

Xcodeの操作で気をつけないといけないこと

2022年10月24日

finderにはファイルがあるのに、Xcode上で表示されない。

Add files to ....でXcode上に取り込む。
Finder上にファイルを配置したとしても、Xcodeには認識されない。
Add files to ...で取り込む必要がある。

 
ドラッグ&ドロップでXcode上に直接取り込むこともできる。
 
ちなみに、ドラッグ&ドロップで取り込むときや、Add files to ...で取り込むときに、
items if needed
にチェックを入れないといけない。
 
以下のようにXcode上の別プロジェクトからXcode上の本プロジェクトにファイルをドラッグ&ドロップすると以下のようなモーダルが出る。
そこで「Copy items if needed」にチェックをすると実体ファイルを取り込むことができる。これによりもうその本プロジェクトに実体のファイルが存在することになる。パスを見るとそうなってる。
 

 
しかし取り込むときチェックをしない場合、参照となり、実体ファイルではなくなる。
 

 
なので基本的に必ず、「Copy items if needed」にする。
※ これで自分はこれをしなかったことでかなり苦しみました。。
 
実際に、Xcode上で2つを開きながらドラッグ&ドロップしてみると、
本プロジェクトで編集してみると、参照元のファイルがある別プロジェクトの方で自動的に編集した内容がリアルタイムに反映される。
 

これにチェックを入れず取り込むとあくまで、参照だけが取り込まれ、実体ファイルではない。
参照先のパスがXcode上に保存されて、あたかも実体があるように見えるが、Xcode上に表示されつつもあくまで実体ファイルではなく、
Xcodeからその別のところにあるファイルをあくまで参照しているということになり、パスが変わる。

なので例えば誰かと開発をしているとき、
リモートリポジトリにアップしたとする。
そうするとこのファイルだけ、参照のパスなので、他の方がそのファイルを使おうとするとそのパスにファイルがないので、編集ができずビルドすると参照先にファイルがない!とエラーになってしまいます。
 

 

SwiftUIファイルがあるのにも関わらず、Viewが認識されずエラーになる

Xcode上にファイルがあり、さらにFinder上にも実体ファイルがあるのに、なぜかコンパイルするとViewに対して、Cannot find '' in scopeと出る。
なぜかファイルがあってViewもあるのに、Xcodeに認証されずビルドでエラーが発生してしまう。
以下のようなエラーです。
Cannot find 'ContentView' in scope
 

まあこのエラーは、・・・Viewがそもそもなければこういったエラーが発生したりしますが、
今回の場合は、以下のように
ContentViewがあるのに、認識されずエラーになる場合です。
 


 


 

原因としては、Xcodeのcompile sourcesにファイルが登録されていないからです。
左のiOS-Firebase > TARGETSのiOS-Firebase > Builds Phases > Compile Sourcesに
ContentView.swiftが登録されていないからです。
 
実際に以下見ると、Compile SourcesにContentView.swiftファイルが登録されていないからです。
 

 
ここに登録することによって、Xcodeがビルドする際に認識して、問題なく処理がされます。
実際に、ContentView.swiftをAddします。
 

 
そうすると、問題なくエラーがなくなります。
 

 

※ ちなみに、aaaaaa.swiftファイルを作成してみると、自動的にCompile Sourcesに追加されます。(まあ当たり前ですね!)
 

 

Move to TrashとRemove Reference

Move to Trash」は、ゴミ箱へ捨てるなので、そのファイル自体を完全に削除する。参照先にあるファイル自体を削除するということになります。
Remove Reference」は、そのファイルの参照を削除することになります。なので参照先のファイルは削除されず、あくまでXcode上からは消えるということです。
 

Xcode上に実体ファイルがあるわけではないです。
Xcode上に表示されてるSwiftファイルはあくまで参照先のファイルを表示しているだけです。
通常、Xcodeプロジェクトフォルダ内でそのアプリを構成するファイルを入れるのが普通ですが、全く別のところにあるファイルを参照してXcode上で開発することもできるわけです。

 

DerivedDataを削除する

DerivedDataとは、ビルドした際にバイナリファイルであったり、ビルドのコード、さらにはキャッシュなどさまざまなファイルのことです。
ビルドをしていくとどんどんこのファイルが増えていくので定期的に削除したりが必要になります。
ちなみに、DerivedDataは中間ファイルとも言ったりします。

 
各プロジェクトのDerivedDataがこの以下のフォルダにあります。
ここにビルドした際のキャッシュデータなどが含まれているので、かなり膨れてmac自体のデータ容量をそれなりに食ってしまいますので、削除などをしていきましょう!
~/Library/Developer/Xcode/DerivedData
 

それか、簡単に以下でも削除できる?Clean Build Folder

 

Lookerにも中間テーブルでDerived、、、あ!DerivedTableというのがあったなー!
 

SPMで入れたPackageリストの確認と削除

 

 
選択して-押せば削除
 

 
以下のようにフォルダは青だとXcodeに認識されていない。
 

 

-IT, アプリ開発
-, ,

© 2022 Yosshi Blog Powered by AFFINGER5