Xcode
Swift
More than 1 year has passed since last update.

Xcodeで画像処理用macOSアプリ開発(Swift)

はじめに

Xcode, Swift初心者が画像処理アプリを開発する環境を整えようと思ったけど、
上手くいかなくてうんちだったので書いた。
Xcode9へのアップデートによりうまくいきました。うんちなのは私の方でした。
めもあ

環境

Mac Book Air
mac OS 10.12.6
Xcode 8.3.2

画像処理フレームワーク

EasyImagyを使ってみることに。
Swiftで画像をめちゃくちゃ簡単にあつかえるライブラリ

インストール

readme.MDに従う。

  1. Put EasyImagy.xcodeproj into your project/workspace in Xcode.
  2. Click your project icon and select the application target and the "General" tab.
  3. Add EasyImagy.framework to "Embedded Binaries".
  4. import EasyImagy in your swift files.

まず1.ファイルの追加方法が分からない。ググる。
対象のファイルをXcodeのウィンドウにドラッグ&ドロップでプロジェクトに追加できるらしい。

No such module

上記2.3.と進み、つづいて4. EasyImagyをimportするも、「No such module」のエラーが表示されつまづく。
スクリーンショット 2017-10-03 15.32.22.png

さらにググると以下を発見。
アプリに広告のフレームワークを追加したのに「No such module 'GoogleMobileAds'」と表示される問題の解決方法(Xcode7,Swift2.0)

これは、フレームワークをXcodeにコピーできていないことが原因です。
従って、何らかの方法でフレームワークをコピーしてXcodeに入れることでエラーは解決されます。
Xcodeに外部からのフレームワークをコピーする一つの方法として、BuildPhasesのCopyBundleResouecesに追加する方法があります。さっきの場合、GoogleMobileAdsをXcodeに追加する際にはドラッグしたらそのまま追加される感じでしたが、CopyBundleResouecesに追加する際には「Copy items if needed」というチェックの欄があります。

xcodeprojがリソース一覧に追加されない

Copy Bundle Resourcesの下の[+]を選択し「Add other...」より「EasyImagy.xcodeproj」ファイルを選択してみるも一覧に追加されない。そもそも「Copy items if needed」というチェック欄が出ない。

スクリーンショット 2017-10-03 15.33.06.png
こっちは選択した回数だけ増殖する。

Xcodeが落ちる

その後、「Embed Framework」よりフレームワークの追加ができることがわかった。
また、「Target Dependencies」にも同様にフレームワークを追加した。

これをLinkBinaryWithLibraries(Linked Frameworks and Libraries)にドラッグして追加することで、エラーは解決されました。

とのことなので、「Embed Framework」から「Link Binary With Libraries」へドラッグしてみると…
Xcodeが落ちた。

スクリーンショット 2017-10-03 16.31.01.png
再起動。これはやらなくていいやつか?

undeclared typeエラー

とりあえず、「No such module」エラーは出なくなった。
しかしビルドには失敗。フレームワーク内のソースコードで以下のエラーが発生。

Use of undeclared type 'UnboundedRange'

「UnboundedRange」という型が宣言されていないそうな。
標準ライブラリ?らしいが調べてもわけわからんのでもう諦めた。
UnboundedRange

簡単な画像処理をしたいだけなのに何故こんなめんどくさいのか。
フレームワーク追加できてるのかもよく分からんし環境構築(できてない)だけで1日潰れるとかほんと勘弁してほしい(うんち)