山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Swift悪戦苦闘

Swiftで画像認識をしようと思ったんですが大苦戦。しかし、なんとかできました。

ソースはGitHubに上げようと思いますが忘れないうちにポイントだけ。

Objective-Cのモジュール(framework)を使うときは、アップルのリファレンスにはSwift中のimportで使えると書いてあるがBridging-Header.hに書かないとできなさそう。importはエラーになる。

Objective-C++のモジュールを使うときは、何でもいいから拡張子が.mmのファイルが存在すればよさそう。ないとリンクエラーになる。

今回使ったGPImageRecognitionEngineはbuild settingsからarm64を削除しないとリンクエラーになる。

リンクエラーは本当にわけがわからないので死にますね。ビルドしたときにApple Mach-O Linker Errorなんて出たら絶望ものです。もっとユーザーのアクションがわかりやすいエラーメッセージにしてほしいです。

実行時エラーもとてもわかりにくいです。NSMutableArrayにnilをaddしようとした場合など。前々関係ないソースの部分がハイライトされ、スタックトレースらしいものも出ますが自作ViewControllerの名前が変わっていたりして見づらい。ステップ実行してようやくどこで失敗しているかわかる感じです。

しかし最終的にできたので今日は満足です。