【Xcode】複数のバージョンのXcode(Swift)でCarthageをupdateするときのバージョン合わせ

どもも。Reoです。

先日Xcode9とSwift4にアップデートして、その弊害(参照: 【Swift】Xcode9+iOS11でUINavigationBarが正しく表示できなくて困った話)が出たので、現在はXcode8を使っています。

このときXcode-betaとXcode8を入手したので、現在私のPCにはXcodeがbetaと8と9の3つ入っています。

 

Xode-betaを入れた時点でターミナルで

sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer

と使うXcodeを切り替えていたことをすっかり忘れていました。

特に何も困ることがなかったので、気にせずそのままXcode-betaを選択したまま、Xcode8を使っていました。

 

CarthageでAlamofireを入れていたんですが、この状態でCarthageのupdateを行うと・・・

Module compiled with Swift 4.0.1 cannot be imported in Swift 3.1 /User/…

というエラーが出ました。

 

これむしろ逆の方でよくあるエラーで、Swift3で書かれたプロジェクトをSwift4にconvertするときに出ました。

Swift3 -> Swift4のときは

carthage update

をしてやるだけでSwift4に対応することができました。

 

んで今回。

Xcode8+Swift3でやっているのにも関わらず

xcode-select -print-path

で選択されているXcodeをみてみると

/Applications/Xcode-beta.app/Contents/Developer

とXcode-betaが選択されていることになっていました。

この状態でcartageをupdateすると上記エラーになるので、xcodeを選択し直してやります。

sudo xcode-select -switch /Applications/Xcode8.app/Contents/Developer

これで、

carthage update

をしてあげればおkです。

プラットフォーム指定の方も

carthage update --platform iOS

 

Xcodeを複数入れている場合、Carthageのupdateはxcode-selectで指定されているバージョンに合わせてアップデートされるよ!ってことでした。めでたし。

 

どうでもいいけどXcode-betaいれてからビルド時のアイコンがベータのやつになったんだけど

てっきりこれもxcode-selectで指定されたやつが出てくると思ったんだけど、直してもベータのままだったよ・・・・。PC再起動したら戻るんだろうか・・・・。

 

ではでは。

 

2018/04/14追記
そういえば・・・と思って見てみたらXcodeのアイコンBetaじゃなくなってた。
いつのまに。
iOS , ,
コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS
more