2009/11/05

iPhone JSON Framework使用時に実機でのコンパイルエラーの対処

iPhoneでJSON Frameworkを使って開発しているとき。シュミレータではエラーが出なかったのが、実機でのデバッグではコンパイルエラーになる場合の対処法。
Xcode3.1.4 + iPhone SDK 3.1.2 + iPhone 3G(OS 3.1.2[7D11]) + JSON Framework (2.2.2)で遭遇しました。
エラーメッセージ
  1. Codesign error: 〜“object file format invalid or unsuitable”  
Codesignのエラーということ、ググるとこれはJSON Frameworkが悪さしているということが分かった。

コンパイルエラーの対処方法
プロジェクト > プロジェクト設置の編集 > ビルド > コード署名リソース・ルールパス を編集
デフォルトでは空欄なので以下を追加
  1. $(SDKROOT)/ResourceRules.plist  

これでコンパイルは通るようになります。しかし実機での実行時に[NSObject JSONValue]メソッドが呼び出せないエラーが起こり例外エラーになってしまいます。この対処法がわからない。

JSON Frameworkの導入はここを参考に
http://www.syuhari.jp/blog/archives/1146


コンパイルエラーの対処法はここを参考にしました。
http://iphone.galloway.me.uk/2009/04/json-framework-codesign-object-file-format-invalid-or-unsuitable/

解決
JSON Frameworkを使うときに[NSSring JSONValue]が呼べない問題は
  1. //ここでJSONValueを使うのはだめ,実機で落ちる  
  2. //NSDictionary* jsonItem = [jsonStr JSONValue];  
  3.   
  4. //こっちを使う エラーはセットしておく方が大人の対応。  
  5. NSError *error;  
  6. SBJSON *json = [[SBJSON new] autorelease];  
  7. NSDictionary *jsonItem = [json objectWithString:jsonStr error:&error];  
  8. if (!jsonItem) {  
  9.  NSLog(@"%@", error);  
  10. }  

JSON Framework - Google Codeのフォーラムで議論されてました。
http://code.google.com/p/json-framework/issues/detail?id=22