思いつくままプログラミングネタを書き殴ります。Cocoaで簡単なファイラーを作る上記のような簡単なファイラーを作ります。ツリーの使い方とテーブルの使い方はしばらくすると忘れて思い出すのに時間がかかるため、メモとして残しておきたいと思いました。ソースコード一式はGitHubに置いてあります。Bindingを使うとソース上に現れない情報があるので、画像多めで行ってみます。開発した環境はMacBookPro6,2(15インチ)MacOSX10.6.6Xcode3.2.5です。アプリケーションの新規作成から。Xcodeを起動してファイル→新規プロジェクトメニューを選択します。Applicationを選択し次へでSimpleFilerと入力します。これで雛形のアプリケーションが作成されました。次にファイル→新規ファイルを選択して、新しいクラスを作ります。Class→NSObjectを選択し次へ。ここでファイルを表現するFileNodeクラスとツリーやテーブルでアイコンを表示するためのCustomCellクラスを作ります。CustomCellに関してはこのページを参考にしました。cell;}@endさらにデフォルトにあるSimpleFilerAppDelegateにも手を入れます。これをメインのコントローラーとして利用しています。Builderの登場です。ここから、文章での説明が難しくなるのでイメージをガンガン貼っていきます。Controllerをドロップします。Path→filesこれでコントローラー系はOKです。Viewを配置します。Key→arrangedObjectsUI系は以上です。最後にメインコントローラーとUIオブジェクトを接続します。Columnを接続します。接続の仕方は右にある丸をマウスダウンすると十記号になるので、それをターゲットのUIまでドラッグしてマウスアップすると接続されます。Xcodeに戻ってビルドとデバッグボタンを押せば動き出すはずです。ColumnのBindingされたValueの扱いが違うことです。Viewではこのキーを設定しないと実行時エラーになります。仕方がないのでFileNodeクラスに自分自身を返すmeというプロパティを追加しました。ViewではValueに指定した値に対してcopyWithZoneを呼び出すため、FileNodeでは自分の内容をコピーして返すcopyWithZoneを実装しました。ソースコード一式はGitHubに置いてあります。コンバーター「唐辛子」を利用していました。ところが、最近flashのバージョンを上げたせいか、改行がうまく反映されなくなっちゃいました。しょうがないので、自前でおんなじようなツールをXcodeで作ってみました。おんなじようなと言いつつ、実はかなり劣化してまして、予約語やコメント等に色を付けることができません。HTMLのエスケープくらいしかしてません。ちなみに、HTMLのエスケープはgoogle-toolbox-for-macを利用しています。ことは、InterfeceBuilderでGUI作っただけとか?まあ、ほとんどそんなもんですが、一応変換ボタンがクリックされた時のソースを載せます。これだけでも、慣れないもので色々調べながら作ったので、時間はかかりました。▲NSTextFieldに値を入れたり出したりXcodeでCocoaでObjective-Cな話です。カテゴリーをXcode、Cocoa、Objective-Cのどれにしようか迷いましたがXcodeで統一します。Xcodeを軽く触ってみようと思って、2つのテキストフィールドに数字を入力して、ボタンを押すと、もう一つのテキストフィールドに合計値が表示されるアプリケーションをつくってみました。テキストフィールドに値を設定するのは簡単にわかったんですけど、値を取得する方法がわかりませんでした。実はNSTextFieldクラスでは無くその継承元のNSControlクラスのメソッドにありました。intValue]となります。objectValueなどがあります。最後に実際に足し算を行うプログラムのヘッダーと本体を書きます。(12/28)PostgreSQLとRubyを組み合わせてブラックリストチェックの速度を測ってみた。