!410

七転八倒

[iOS]UIWebviewへJSONでデータを取ってくる計画

Twitterなどの脈絡がなくても取れるものならこういう感じ。

NSURL *httpDataUrl2 = [NSURL URLWithString:apiUrlJson];
NSURLRequest *request = [NSURLRequest requestWithURL:httpDataUrl2];
NSData *json_data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:json_data options:NSJSONReadingAllowFragments error:nil];

しかし今回はJSONで呼び出す側がセッションを使っているため、単純にURLで指定して取る方式は使えない。
Webviewを動かしJavascriptを介して取ってくる。

[webView stringByEvaluatingJavaScriptFromString:@"alert('call from native');"];

ほんとにこれでいけるのか。
だめだったら素直にIDなんかを保持しといて、引数に渡す方式のを実装しとかないといけない。
その場合はメモリにためればいいのでそんなに難しくないはず。

05/16追記

単純に呼び出す箇所が悪いだけだった。

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

ここで確かめていたので取れない。遷移直前に呼ばれるためrequestにセッションがちゃんと入ってなかったりする。

- (void) webViewDidFinishLoad:(UIWebView *)webView

これで問題無し。
Javascriptで実装する場合、Viewに依存することになってよくない。

参考