【Xcode】プロジェクトにファイルを追加/削除/コピーする方法と注意点
この記事からわかること
- Xcodeにファイルを追加する方法
- 「Copy items if needed」とは?
- ファイルの削除やコピー方法
- 2つのプロジェクト間でコピーする
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
参考文献:Managing files and folders in your Xcode project
Xcodeでファイルを追加や削除したりする際はXcodeの構造上注意しないと思わぬエラーが発生してしまうことがあります。同じようなミスを繰り返さないためにXcodeにおけるファイル操作方法をまとめておきます。分かりやすいようにXcode内のエリア名を確認しておきます。
おすすめ記事:Xcodeのインストール方法と使い方!終わらない時の対処法!
ファイルを追加する
ファイルを追加する時はXcode内のナビゲータエリアにドラッグ&ドロップで対象のファイルを移動させます。以下は「ダウンロード」フォルダにある「GoogleService-Info.plist」というファイルをXcode内に入れ込んでいます。
おすすめ記事:【Swift UI/Xcode】Firebaseの導入方法!Cocoa Podsでの使い方
この方法で追加すると以下のような画面が表示されます。ここで「Copy items if needed:必要に応じてアイテムをコピーする」にチェックを入れておくことで移動したファイルがコピーされてXcodeプロジェクトのフォルダ内に生成されます。
ちゃんとXcodeで追加したファイルが認識され、またダウンロードフォルダの中にも対象のファイルが残ったままになっていることを確認できます。
FinderからXcodeプロジェクト内をチェックしてみると追加したファイルが生成されていることを確認できます。
Copy items if neededにチェックを入れない場合
では「Copy items if needed」にチェックを入れない場合はどうなるのでしょうか。touch
コマンドで適当なテキストファイルを作成し、Xcodeに追加してみます。
$ touch sample.txt
同じ要領でXcode内にドラッグ&ドロップで対象のファイルを移動させます。
Xcode内からは追加したファイルは認識されているので先程と何も変わらない感じはしますが、Xcodeプロジェクト内をチェックしてみると追加した「sample.txt」が生成されていないことがわかります。
Xcode内から確認できるフォルダ構造とFinderから確認できるフォルダ構造は必ずしも一致しないことば覚えておくと良いかもしれません。
ファイルのLocation(Full Path)を確認する
ではXcodeプロジェクト内に存在しない「sample.txt」はどのようになっているのでしょうか。その答えはXcodeのファイルの参照先を確認すると分かります。
ナビゲータエリアでファイルを選択した状態で右側エリア(インスペクタ)のLocation(Full Path)部分から対象のファイルの参照先を確認することができます。2つの参照先を見てみます。
Copy items if neededにチェックを入れた方は../Desktop/[プロジェクト名]/[プロジェクト名]/[ファイル名]
となっていますが、チェックを入れていない方は../Desktop/sample.txt
、つまりオリジナルファイルの格納場所になっています。
XcodeではXcodeプロジェクトフォルダ内にあるファイルを自動で読み込んでいるわけではなく、正しい手順で追加されたファイルの参照パスを読み込んで表示しているようです。
- Copy items if neededにチェック有:Xcode内にコピーを生成して参照
- Copy items if neededにチェック無:コピーを生成せずオリジナルを参照
なのでもしデスクトップにあるオリジナルファイルを削除してしまった場合、Xcodeから参照できなくなってしまい以下のように赤く表示されるので注意してください。
ちなみにファイルの追加はドラッグ&ドロップではなく、Xcode上部メニューの「File」>「Add Files to [プロジェクト名]」からでも追加可能です。
ファイルを削除する
Xcodeから参照しているファイルを削除するにはナビゲータエリアで対象ファイルを右クリックして「Delete
」をクリックします。すると以下のような画面が表示されます。
Do you want to move
GoogleService-Info.plist to the Trash, or only remove the reference to it?
This operation cannot be undone.
翻訳:移動しますか
GoogleService-Info.plist をゴミ箱に移動するか、それへの参照のみを削除しますか?
この操作は元に戻せません。
- Move to Trash:ゴミ箱へ移動
- Remove Reference:参照のみを削除
この違いはボタン通り参照しているファイルごと削除するか参照のみを無くすかです。参照のみを無くす場合はXcodeプロジェクトフォルダ内に対象ファイルが残ってしまうので注意してください。
プロジェクト間でファイルをコピーする
AプロジェクトにあるswiftファイルをBプロジェクトにコピーしたい時は両者のXcodeを開きナビゲータエリアからドラッグ&ドロップすればOKです。
この際に「Copy items if needed:必要に応じてアイテムをコピーする」にチェックを入れることを忘れないようにしてください。
ご覧いただきありがとうございました。