UIWebViewのstringByEvaluatingJavaScriptFromStringでJavaScriptの関数を実行する場合、return値をString型で返さないとNSStringに返却値が格納されないようだ。
例として以下のプログラムをあげる。
function hoge(){ var j ={}; return j; }上のJSは単純にJSONを返してくれる関数であり、これを実行するObjective-Cを下のように実装してみる。
UIWebView *webView; NSString *ret = [webView stringByEvaluatingJavaScriptFromString:@"hoge();"];で、結果として、retには何も設定されていない。
この場合、どうするのかというと、JSON.stringifyを使ってString型にする。
function hoge(){ var j ={}; return JSON.stringify(j);}そんでもって、下のようにNSStringを一度、NSDataにした上でJSONをパースすればおk
UIWebView *webView; NSString *ret = [webView stringByEvaluatingJavaScriptFromString:@"hoge();"]; NSData *retData = [ret dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:retData options:NSJSONReadingMutableContainers error:nil];実際に使えるNSDictionaryにするまでに道のりが長くてちょっとめんどいです。
0 コメント:
コメントを投稿