stringByEvaluatingJavaScriptFromString: の可読性を改善する

Bookmark this on Google Bookmarks
Share on Facebook

UIWebViewの stringByEvaluatingJavaScriptFromString: は Javascript を実行するので何かとお世話になるメソッドです。
このメソッドの引数は NSString で Javascript のコードを書くことになるので長くなりがちです。
そこで、改行して見やすくすると激しくエラーが出ます。

// 1から10まで足した合計を出力
// エラーが出過ぎてビルドできる気配がない
[self.webView stringByEvaluatingJavaScriptFromString:@"
  var sum = 0;
  var N = 10;
  for (var i = 1; i <= N; i++) {
    sum += i;
  }
  alert('合計' + sum);
"];

Javascriptを別ファイルにしてそれを読み込めばいいのですが、ちょこっと動作を試したいためだけに別ファイルにするのは嫌じゃ!という方は2通り方法があります。

1. 改行する時にバックスラッシュ( option + ¥ )を挿入

// 1から10まで足した合計を出力
[self.webView stringByEvaluatingJavaScriptFromString:@"\
  var sum = 0;\
  var N = 10;\
  for (var i = 1; i <= N; i++) {\
    sum += i;\
  }\
  alert('合計' + sum);\
"];

2. 各行を”(ダブルクォーテーション)で囲む

// 1から10まで足した合計を出力
[self.webView stringByEvaluatingJavaScriptFromString:@""
  "var sum = 0;"
  "var N = 10;"
  "for (var i = 1; i <= N; i++) {"
  "  sum += i;"
  "}"
  "alert('合計' + sum);"
];

これで見やすくなりました。

Masaru の紹介

おもしろげなゲームを作りたいと思いつつ、普通のiOSアプリ作ってます
カテゴリー: NSString, Objective-C, UIWebView   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>