沖縄が日本のシリコンバレーのようになってほしいと願うiOSエンジニアのブログ

世のエンジニアの役に立つようなブログにしたいなぁ

「iOSアプリ開発でZXingObjCを使ってQRコードを読み取る」をやってみた

仕事でQRコードを使ったアプリ開発の案件があったので、

以下のサイトを参考して、サンプルを作成していたが、

そのままでは、うまくいかなかった

 

iOSアプリ開発でZXingObjCを使ってQRコードを読み取る
http://dev.classmethod.jp/smartphone/iphone/ios-zxingobjc21-qrcode-decode/

 

ZXingObjC は、最新の3.0.1を使用

 

まず、

#import <ZXingObjC/ZXingObjC.h> 

 ここで、「file not found」エラーが出たので、

 

Xcodeのヘッダー検索パスに、

「ZXingObjC」のフォルダまでのパスを入れる

私は、サンプルプロジェクトの直下にいれたので、

以下のように設定しました。

$(SRCROOT)/ZXingObjC-master

 

これで、ビルドは出来るようになったが、

QRコードを読み取ろうとしても

 

ZXCaptureDelegate のデリゲートメソッド

 

 

- (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result;

が反応しない。

 

ソースを追っていくと、

 

ZXCapture.m の

if (NSClassFromString(@"ZXMultiFormatReader")) {

      _reader = [NSClassFromString(@"ZXMultiFormatReader") performSelector:@selector(reader)];

  }

 この部分で、if文の中に入って来てない。

つまり、ZXMultiFormatReader クラスが読みに行けてない。

 

いろいろ調べてると、

 

NSClassFromStringを利用して、静的ライブラリからクラスをインスタンス化しようとする場合

http://tonio.hateblo.jp/entry/2014/05/17/131439

 

こういうことだったみたい。

 

これで、無事にQRコードの読み取りがちゃんと出来るようになりました!