Programing Note

千里の道も一歩から

Programing Tips > Xcode > プロジェクトに既存ファイルをコピーする時の注意

Tweet

Advertisement



Event

・サイトを引っ越ししました。2016/10/15

新しいサイトはこちらです。

・サイトをリニューアルしました。2015/12/29

Related Articles:

プロジェクトに既存ファイルをコピーする時の注意

Update on February 28, 2016

Xcodeのプロジェクトに既存ファイルをコピーする時の注意をメモしておきます。


確認環境:Xcode 7.2


Xcodeのプロジェクトに既存ファイルをコピーしようとすると、こんなようなダイアログが出ます。

結論からいうと、

「Destination」の「Copy items if needed」についてですが、

チェックを入れる:

Xcodeにファイルそのものが追加される。

チェックをはずす:

Xcodeにファイルそのものは追加されない。Xcodeにショートカットのようなものが追加される。


それから「Added folders」の「Create groups」と「Create folder references」の違いですが、

フォルダを含めてファイルを追加(階層を持つファイルの追加)する時に関係がある項目のようです。

Create groups:

Xcodeでは黄色のフォルダで表示される。

NSBundle型オブジェクトのメソッドでは、パスを指定する必要がない。ファイル名を指定するだけでよい。

したがって、リソースの量が少なく簡単にアクセスしたい場合はこちらが向いている。

Create folder references:

Xcodeでは青色のフォルダで表示される。

NSBundle型オブジェクトのメソッドでは、パスを含めて指定する必要がある。

したがって、異なる階層に、同じ名前のファイルがあるようなリソースにアクセスしたい場合はこちらが向いている。

ちょっとあやしいのですが、一応、こんな感じかと。


これを実際に検証してみます。


「Destination」の「Copy items if needed」のチェックを入れます。

Xcodeにファイルが追加されてます。

Finderで確認しても、Xcodeにファイルが追加されてます。

今度は、「Destination」の「Copy items if needed」のチェックをはずします。

Xcodeにファイルが追加されてますが、

Finderで確認すると、Xcodeにファイルが追加されていません。

次は、「Added folders」の「Create groups」と「Create folder references」の違いについてです。

これを実際に検証してみます。


こんな階層構造のファイルを追加していきます。

「Added folders」で「Create groups」を選択。

Xcodeにファイルが追加されてます。

フォルダが黄色で追加されてます。

今度は、「Added folders」で「Create folder references」を選択。

Xcodeにファイルが追加されてます。

フォルダが青色で追加されてます。

ここで追加したファイルを、こんな感じに、NSBundle pathForResource で、パスを取得してみます。

9行目がポイントです。

「Create groups」でファイルを追加した場合は、ファイルパスの取得に成功します。

一方、「Create folder references」でファイルを追加した場合は、ファイルパスの取得に失敗します。


「Create folder references」でファイルを追加した場合は、

13行目のように、ファイルのパスを含めて指定してあげないとダメでした。


以外と奥が深いです。


ついでですが、以下はXcodeのHelp「Adding an Existing File or Folder」からの引用です。

Copy items into destination group’s folder: Select this option to create a copy of the selected file or folder in the workspace. Do this if you want to delete, move, or rename files or folders in the workspace without altering the original versions on disk.

Create groups for any added folders: Select this option to create a group named after the folder. The new group contains the items in the selected folder.

Create folder references for any added folders: Select this option to create a folder reference named after the folder. The files that appear in the new folder reference are not part of your project unless you add them to the project explicitly.

Add to targets: Select the destination targets for your selected files or folder references. New folder references and files that can participate in the build process become members of the selected targets.


inserted by FC2 system