Bloggerでマークダウン

Bloggerでマークダウンコードテストvar Person = function(firstname, lastname, age) {this.firstName = firstname; this.lastName = lastname; this.age = age; this.setAge = function(age) {this.age = age; }; this.toString = function() {return ["Hi ! I'm ", this.firstName, " ", this.lastName, " and I'm ", this.age, " year old."].join(""); }; };

オレブラウザを作る 09

今回はホームページアドレスの保存とそれの読み込み。

ここから段々とCocoa特有のお話になっていく。といっても難しいことはなく寧ろ簡単になる仕組み。

まずホームページアドレス設定がアプリケーションのどこで使用されるか把握する。

設定ウィンドウのGeneralビューで使用される。ここでユーザーが任意に指定して保存ね。また保存されているアドレスを読み取って表示するから確認としても使用する。次にアプリケーションの起動時に使用。保存されたアドレスを読み取ってWebViewで表示させる。この2カ所で使用される。

使用箇所が把握できたので、次は設定内容の保存と読み取りの仕組みについて。

MacのアプリケーションはCocoaというフレームワークが土台となる。これに設定内容を保存し読み込むオブジェクトが用意されている。それがNSUserDefaults。オレブラウザのホームページアドレスはこのNSUserDefaultsに保存と読み込みを指示すればいい。

もう一つ。指示する方法について。プログラミングだからコード、今回はAppleScriptだね、でNSUserDefaultsに指示するという形を取ってもいい。だけどこれコードで書くと結構手間がかかって煩わしい。でも大丈夫。Xcodeには煩わしさを減らす為の仕組みが用意されている。言葉の説明より実際にやる方が直感的に理解出来る。

言いたかったのは、Macのアプリケーションを作成するのにプログラミング言語だけでなく開発環境であるXcodeの知識もあると楽が出来るってこと。

逆に言うとXcodeの知識がないと何をプログラミングしているのか読めない・わからないって事になる。手間をかけても見通しが良くわかるよう全部コーディングで済ますって方法が主流かもしれない。でもXcodeの機能を最大限に使用する方法もある。ボクは後者で行こうと思う。理由は直感的に理解できるから。

早速実践。

設定ウィンドウのホームページアドレスを入力するテキストフィールドを選択した状態でXcode右サイドバーのBinding Inspectorを開く。



そこにValueがあるので▶をクリックして展開し詳細を見てみる。こんな感じ。



Bind to とありポップアップボタンがある。それにShared User Defaults Controllerがある。Bind to にチェックを入れてShared User Defaults Controllerを選ぶ。Model Key Pathに任意の値、ここは名前と考えていて良い、を入力。homepageURLとした。Continuously Updates Valueにチェックを入れる。これでホームページアドレスのテキストフィールドで保存と読み込みが可能になった。簡単だ。



実際に動かして見てみる。



最初だから当然空っぽ。何かアドレスを入れる。http://www.apple.com/jp/を入れてみる。入力してエンターキーを押す。これで保存された。実際に保存されたかを確認する為にアプリケーションを再起動させて確認。



入力されたhttp://www.apple.com/jp/の値が入っているのを確認できた。設定ウィンドウで色々設定した内容はこのように保存と読み込みが出来る。

次はこの設定内容を読み取ってWebViewで表示させる。これはコードを書く。

AppDelegateのapplicationWillFinishLaunching_()ハンドラにてこんな風に。

on applicationWillFinishLaunching_(aNotification)
    set userDefaults to standardUserDefaults() of current application's NSUserDefaults
    set homepageURL to stringForKey_("homepageURL") of userDefaults
    if homepageURL is missing value then
        set homepageURL to "http://www.apple.com/"
        tell userDefaults to setObject_forKey_(homepageURL,"homepageURL")
    end if
    tell webView to setMainFrameURL_(homepageURL)
end applicationWillFinishLaunching_

if homepageURL is missing value then を設けたのはこのアプリケーションが初めて起動した時を想定して。設定より起動が先だからね。当然この最初の設定内容は設定ウィンドウに反映される。

もちろん設定ウィンドウであらためてホームページアドレスを設定すると次回オレブラウザが起動した時は設定したアドレスを開くことになる。

さて設定されているはずのhttp://www.apple.com/jp/を表示するか起動して確認。



ちゃんと日本語のAppleサイトが表示された。

説明が回りくどかったかもしれないけど、こうやって実際にプログラミングするとCocoaがいかに簡単で便利なのかがよくわかる。

ちなみにこの簡単で便利な機能はBindingって呼ばれる機能。興味あればCocoa Bindingで検索してみて。Bindingは内容を詳しく知らなくても使えるよ。Xcode開発ってすごい。

今回はこれまで。設定ウィンドウは一回ここで終わる。設定ウィンドウばかりじゃ飽きるしね。次回からブラウザに足りない機能を追加していく。




コメント

このブログの人気の投稿

Bloggerでマークダウン