JavaScriptからObjective-CへJSONで渡す
複雑な構造のはJSON使って渡せばよかったんじゃないかorz
WebViewのJavaScriptとObjective-Cでのやり取りでもそりゃJSON使えるか。
JSON使うのはWebのAPI叩くときみたいな固定観念が。頭固い。
OS X 10.7から標準でNSJSONSerializationが使える。iOSは5から。
function testMethod() { window.objC.callFromJSObjCMethod_(JSON.stringify( [{ "a" : 1 },{ "b" : 2 }] )); }
- (void)callFromJSObjCMethod:(NSString *)jsonString { NSDictionary *dict=nil; NSError *error=nil; NSArray *array = [NSJSONSerialization JSONObjectWithData: [jsonString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:&error]; for (dict in array) { NSLog(@"jsObject: %@",dict); } }
JSのObjectをNSDictionaryにしてくれるのが便利。
複雑な構造の値をJavaScriptからObjective-Cに渡す場合に使うとよさげ。
簡単な構造のものなら、JSON使わず直接Convert、と、使い分ける感じか*1。
*1:WebKit Objective-C Programming GuideのUsing JavaScript From Objective-C