2011年3月3日木曜日

iphone MGTwitterEngineで、json形式を使用する際の設定など






MGTwitterEngineは、TwitterのAPIをライブラリ化したようなもので


認証から、データの取得、データの更新などの、Twitter連携をする際は使った方が断然便利!


しかし、「Search系のAPI」を使用しようとすると、少々めんどくさい。

普通にXML形式のみを扱う際の手順は、この方々のブログを見てください。
http://d.hatena.ne.jp/tomute/20091029/1256865402
http://d.hatena.ne.jp/yuum3/20100511/1273556702
http://iphone.longearth.net/2010/08/04/%E3%81%BE%E3%81%A0%E9%96%93%E3%81%AB%E5%90%88%E3%81%86iphone%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AExauth%E5%AF%BE%E5%BF%9C/


Search系APIメソッドを使用する際のめんだくさい作業

1. Search系のAPIをMGTwitterEngineライブラリで、使用するためには、なぜかJSON形式でデータを取得することになる
なぜでしょう‥。

2. JSON形式で、取得するには、MGTwitterEngineライブラリの中の、JSON解析用ライブラリ(〜YAJL〜というファイル名のもの)を使用しなければならない。
XML形式のみ扱う場合は、MGTwitterEngineライブラリの中の「yajl」とファイルはコンパイルされないようターゲットから外すか、ファイルごと消した方が良い。


3. このライブラリを使用しようとすると、libyajl.dylibっているライブラリが必要になる。
TwitterEngineYajl*****ファイルが、このライブラリを使用しているため、libyajl.....がないとエラーが出る



4. yajlをインストールする必要がある
僕の場合、mac-portでインストールしたけど、x86_64のみしか対応してないものだったみたいで、ここでも手こずりました。


と、などなどさまざまな問題点があり、ドキュメントも少ないし大変だった‥

手順は、この方の手順通りで行けます。
http://damienh.org/2009/06/20/setting-up-mgtwitterengine-with-yajl-106-for-iphone-development/

で、最後に、,yajl_allocとかのエラーの対応をした後に、エラーが上記4の問題でエラーがでたので、


このかたのブログを参考にさせていただき、 i386にも対応させ、完了した。
http://d.hatena.ne.jp/nakamura001/20101019/1287514329

いじょー!



‥っと思いきや、途中でこけました

どうやらうまくi386用が生成できなかった模様。理由はなぞ。


ってことなので、この方法はあきらめました。。



そこで、このかたのブログを参考に、
http://d.hatena.ne.jp/tomute/20091220/1261372045

libYAJLIPhone-0.2.13.zip」をページ中央らへんのDownloadのiPhoneというところから
ダウンロード


中身↓↓
libYAJLIPhone.a
NSObject+YAJL.h
yajl_common.h
yajl_gen.h
yajl_parse.h
YAJL.h
YAJLDocument.h
YAJLGen.h
YAJLParser.h

これを自分のプロジェクトに追加し、

プロジェクト設定を編集のビルド部分で、「他のリンカフラグ」に

「-ObjC」
「-all_load」

の2つを追加する

そしていざ、ビルド!


‥しかし、まだエラーがでた。

Yajl系のライブラリのシンボルのリンクエラー。。。。


じゃーっと思い、プロジェクトにYJAL.frameworkを追加してみる
ここからダウンロード

追加後、今度こそっと!ビルド!


しかし、エラー。。。。


なんか、
最初に追加した、libYAJLIPhone.aと今追加した、YAJL.frameworkの中身が何かかぶっているっと。


ためしに、libYAJLIPhone.aをプロジェクトから削除。。


すると、エラーがなくなりビルドできました!


長かったですがようやくこれで、TwitterSreach系のAPIがMGTwitterEngineから使用できます!




0 件のコメント:

コメントを投稿