2012-03-20 6 views
0

iPhone用にプログラミングしています。UIWebViewにさまざまなローカルに保存されたHTMLページを表示するアプリケーションを作成しています。すべてのページは構造とスタイリングが同じですが、唯一の違いは内容です。UIWebViewのダイナミックページのHTML文字列の保存と取得

今は「マスタビュー」(UITableView)でプログラミングしています。ユーザがセルを選択すると、全体的なナビゲーションコントローラがスタックに「詳細ビュー」をプッシュします。このビューにはUIWebViewが含まれています。詳細ビューが表示されると、そのWebView HTMLコンテンツがロードされます。

すべてのページは構造的に同じなので、HTMLテンプレートページを設定してテキストに読み込む方が簡単だと思いました。私の理解から、これはPHPの仕組みです。ユーザーはアイテムのAmazonページを読み込みますが、それぞれの構造とスタイルは同じですが、PHPコードはその特定のアイテムのタイトル、説明などを取得します。

iPhoneでUIWebViewを使ってこれを行うための最善の方法を知りたい。

HTMLファイルをローカルファイルからNSStringオブジェクトに読み込みます。私はウェブウィザードではなく、Javascriptに慣れていません。テンプレートには、テキストの部分を示すための特別なIDを持つタグが含まれています。 NSString find &を使用して、各特殊タグを見つけて適切なテキストを挿入するメソッドを置き換えます。

これはプログラミングが簡単で、ページを読み込むときには特に4〜5個の置換えがあるので、それはかなり効率的になると私は信じています。誰かがより良い提案(特に徹底的な提案)をしているなら、それを聞いても大丈夫です。

今、それは本当に私の問題ではありません。私は、テンプレートに挿入される複数行のHTML文字列を格納して取り出す最良の方法が何であるか不思議です。私が知る限り、通常のWebページでは、PHPはXMLファイルの一部またはSQLデータベースに対するクエリを取得します。

私がiPhoneでよく知っている2つのデータ記憶/検索方法は、PlistファイルとStringsファイルです。文字列ファイルは、複数の文字列を格納することができるので、文字列のどこにでも二重引用符をエスケープする必要があることを除けば、私にとってはかなり便利なようです(そしてHTMLであるためいくつかあります)ダイナミックなWebページではなく、国際化のためにAppleによって

Plistファイルの場合、文字列の配列を簡単に作成できますが、複数行には対応していません。最新のXCodeのPlistエディタは、一度に1行しか表示しないため、作業に少し迷惑をかけることになります。また、Plistの使用目的に反して、巨大な文字列で塗りつぶしている気がします。次に、私がPlistからデータを読み出すために見つけることができる唯一の方法は、全体をNSDataにロードするか、オブジェクトとそれ以外のものにシリアル化することです。 UIWebViewを再構成する必要があるたびにPlistを再直列化し、Plistをシリアライズしてメモリを無駄にして、アプリケーションが実行されている間、結果として得られるオブジェクトをメモリ内に保持することは愚かなような気がします。私はそれが多くのメモリを取ることができないと思うそれは単なるテキストですが、私は本当に確実ではありません。

WebViewに配信される前にHTMLを変更する代わりに、ローカルのXMLファイルから文字列をプルするHTMLにテンプレートJavascriptが必要です(Objective-CはキーストリングをJSをWebViewにHTMLを渡す前に)、WebViewのJSロジックが実際の置換を行います。しかし、私はこれをどうやってやっているのか分かりません.AJAXのチュートリアルは、常に外部サーバ、UIWebViewの使い方がわからないスクリプトライブラリなどを参照していました。

最後に、これを実行する方法についてアドバイスをいただき、ありがとうございます。あなたの提案がどんなものであれ、より詳細な方が良いでしょう。

答えて

1

は、私の知る限りでは、通常のウェブページ上で、PHPは、SQLデータベース

号まあに対するXMLファイルの断片、またはクエリを取得し、はい、それは可能性があります。しかし、PHPは何かを出力することができます。 Objective-Cによく似ています。

私がiPhoneでよく知っている2つのデータ記憶/検索方法は、PlistファイルとStringsファイルです。

これらは、アップルによって伝播された特殊な形式です。任意のファイル形式を使用できます。それは私が私のUIWebViewを再設定する必要があるたびに再シリアライズのplistに愚かなことだろう、とメモリの無駄がPLISTをシリアル化し、全体の時間にメモリに私のアプリを結果オブジェクトを保持するように私は感じstringWithContentsOfFile

を使用します行っている。

あなたはあまり選択肢がありません。別の方法:ディスクキャッシュを使用する。レンダリングされたテンプレートは、最初にアクセスされたときにファイルとして保存します。次回は、キャッシュされたファイルの存在を確認します。

WebViewに配信される前にHTMLを変更するのではなく、WebViewのJSロジックで実際の置換が行われるはずです。

これはおそらく悪い考えです。 JSはObj-Cよりもはるかに遅く、メモリが空いています。さらに、JSにはできることはなく、Obj-Cではできません。

あなたは完全な機能を備えたtemplating engine

+0

感謝を使用して検討することは避けられないオーバーヘッドを心配していない場合、あなたは基本的に私の質問に答えました。私の最善の選択肢は、Plist形式ではHTMLタグをソースコードに明示的に格納できないため、ファイルをオブジェクトに読み込むためのXML解析オブジェクトを実装することです。おそらくディスクキャッシュを使用します。私はあなたの助けに感謝します。 –

関連する問題