にけのて
Nike+iPod と JogNote を使ってジョギング。で、Mac から Nike+ のデータをあれこれ見たくなったので、ちょこちょこっと作ってみた。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

テーブルをソートできるようにした
テーブルに上向き/下向きの三角マークが出て、そこを押すとそのカラムが昇順/降順でソートされるってのを良く見かける。それをにけのてでもやってみた。

InterfaceBuilder に NSArrayControler があるからこれを使うと簡単なんだろうけど、にけのてでは使ってない。使うようにいぢるのは面倒なので、手作業でじっくり実装していこう。

まず、テーブルで表示されるデータのデータの持ち方。Apple の Cocoa のドキュメントを見ると KeyValueCodingって呼ばれてる。値を名前で呼び出すみたいな?感じ。にけのてだと各ワークアウトウインドウのテーブルでは、K、タイム、1KmSplit、5KmSplit の4つのカラムがある。これを k[]、time[]、1KmSplit[]、5KmSplit[] の様にそれぞれのデータ毎に持ったり、struct myKmData {K, time, 1KmSplit, 5KmSplit}; myKmData[];ってするんじゃない。struct でやる方は考え方は同じ?なのだけど、値を得るのに名前(key)でやりとりできるようにしなきゃいけない。というわけで、struct でなく Dictionary で myKmData を作る。今回は k, time, 1KmSplit, 2KmSplit はそれぞれ km, sec, 1KmSplit, 5KmSplit という key でアクセス。例えば sec のデータをセットするにはこんな感じ。

[myKmData setValue:[[nextNode childAtIndex:0] stringValue] forKey:@"sec"]; //Add "sec" data to dictionary

で、この myKmData を NSMutableArray に付け足していけばテーブルのデータができあがる。

NSMutableDictionary* myKmDataArray;
[myKmDataArray addObject:myKmData]; // Add myKmData to datasource array

次に InterfaceBuilder で NSTableView にソートする時の key 等を入力する。これは NSTableView の各カラムのアトリビュートに sort key を入れる。ここで入れた sort key が myData の key になってる。
NSTableColumn


最後にコードの方にちょこちょこっと。datasource になってるクラスで

-(void) tableView:(NSTableView *)tableView sortDescriptorsDidChange:(NSArray *)oldDescriptors

を実装する。これは、上向き/下向きの三角マークが変更になった時(クリックされた時)に呼び出される。
中身は簡単。データを持ってる NSMutableArray(myKmDataArrayだ)に新しい sortDescriptors をセットして、テーブルを表示し直せば(reloadData だ)OK。
とりあえず、これだけでテーブルは上向き/下向きの三角マークでソートできるようになった!

この KeyValueCodingって名前(NSString)を使って値にアクセスするから変換やら何やらの手間がかかって遅いようなイメージがあるのだけど、今時の速いマシンでそんなの気にするのは意味ないのかな? でも、にけのてでは扱うワークアウトデータが .xml ファイルなのだけど、.xml ファイルを読み込んでデータとしてあれこれするのに keyValueCoding は結構良いのかも。なんか凄く簡単にというか都合良くデータを読み込んで格納できた。
sortedGraph

スポンサーサイト

テーマ:Mac - ジャンル:コンピュータ


この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://paraches.blog77.fc2.com/tb.php/18-76f5a315
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Author:paraches
Nike+iPod で走ってお腹を…

にけのて ダウンロード

Nike+iPod

温泉旅行

宿・ホテル予約ならじゃらんnet

最近の記事

Zenback

ランキング

人気ブログランキングへ

アクセストレード

バリューコマース

最近のコメント

月別アーカイブ

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。