1. mokemokechicken

    No comment

    mokemokechicken
Changes in body
Source | HTML | Preview
@@ -1,91 +1,91 @@
はじめに
===========
Swiftでプログラムを書いていてもやはりObjectiveCのコードを参照する必要があるときはまだまだあります。
上手く行っているときは良いんですが、トラブルとなかなかどうしていいかわからないこともあると思います。
-そういう時のチェックポイントのメモ。
+そういう時のチェックポイントのメモです
※「本体側のプロジェクトを **アプリプロジェクト**」「テストプロジェクトを **テストプロジェクト**」と呼ぶことにします。
-[project]-Bridginge-Header.h はあるか?
+[project]-Bridging-Header.h はあるか?
==============
SwiftのコードからObjectiveCのコードを参照するには、 `[project]-Bridginge-Header.h` を用意してそこに HeaderFileのImportを書く必要があります。
[SwiftとObjective-Cの相互利用する際の注意](http://qiita.com/fmtonakai/items/d9ba99ee8c5af096dbb9)
などが参考になると思います。
HeaderはあるのにアプリプロジェクトでBridging-Headerが見つけられない時
========
Bridging-Headerはあるのに、アプリプロジェクトで見つけられない、という場合は、
アプリプロジェクトの以下の部分がちゃんと埋まっているか確認してみてください。
たまにXcodeが自動生成してくれてなくて空っぽの時があります。
![DeepTransitionSample_xcodeproj.png](https://qiita-image-store.s3.amazonaws.com/0/11124/61158e9c-2574-1580-f12f-05869e79ae86.png "DeepTransitionSample_xcodeproj.png")
Bridging-Header内のimportファイルがテストプロジェクトからfile not foundになる
========================
**アプリ側のビルドは通っているにも関わらずテストプロジェクトのビルドに失敗する** 時があります。
以下のように `File Not Found` と言われます。
![DeepTransitionSample-Bridging-Header_h.png](https://qiita-image-store.s3.amazonaws.com/0/11124/e3e54f96-780d-86a0-5f44-0ab2221efac9.png "DeepTransitionSample-Bridging-Header_h.png")
対処法
--------
この問題は、メッセージの通り、テストプロジェクトにおいて指定されたHeaderFileが見つからないことが原因です。
### アプリプロジェクトの設定
#### 見つからないと言われたHeaderをPublic Headerにする
Xcodeのアプリプロジェクトの設定から、 `Build Phases` -> `+ボタン` -> `New Headers Phase` を選びます。
![OtherViews_と_DeepTransitionSample_xcodeproj.png](https://qiita-image-store.s3.amazonaws.com/0/11124/9d3bf84c-6292-b668-48ea-5948ea104eb4.png "OtherViews_と_DeepTransitionSample_xcodeproj.png")
すると、Headers という項目が追加されるので、そこの `Public` となっている部分に Headerを全部追加します。
これでその Headerファイルは Public になります。
![DeepTransitionSample_xcodeproj.png](https://qiita-image-store.s3.amazonaws.com/0/11124/d9abff10-0b0e-0b3f-e9e1-2156c338e154.png "DeepTransitionSample_xcodeproj.png")
#### Public Header を置く場所を変更する
デフォルトの設定だと、Build Dirのアプリプロジェクト側のDIR配下にHeaderファイルが置かれるようで、
それ故にテストプロジェクトから見つからないみたいです。
そこで `Build Settings` -> `Public Header Folder Path` の値を **`MyHeaders`** とかにします。
この **`MyHeaders` は何でも良い**です。もう少し良い名前をつけてあげてください。(単にMyHeadersと書けばよいです。その前に何も付けないでください)。
項目がやたら多いので、右上の検索バーに `Public` とか入れると見つけやすいです。
![DeepTransitionSample_xcodeproj.png](https://qiita-image-store.s3.amazonaws.com/0/11124/31ee88f8-1c6d-6884-1a34-a41bc7d8dbbd.png "DeepTransitionSample_xcodeproj.png")
### テストプロジェクトの設定
今度はテストプロジェクトです。アプリプロジェクトで置いてもらったMyHeadersのDIRを探すようにします。
`Build Settings` -> `Header Search Paths` -> `$(CONFIGURATION_BUILD_DIR)/MyHeaders`
とします。 **テストプロジェクト側のTargetに設定する**ということを間違えないようにしましょう(下図の①)。
![DeepTransitionSample_xcodeproj.png](https://qiita-image-store.s3.amazonaws.com/0/11124/14d80612-6cd4-b65a-0093-e2e0667c35e2.png "DeepTransitionSample_xcodeproj.png")
### Clean して Build
これでOKです。
一旦、CleanしてBuildすれば今度は治っているのではないかと思います。
さいごに
=======
この手のBuild エラーほど時間の浪費はないですね。
こういうことが起こったらチェックしてみてください。