ManagedObjectを最初からあるキーでソートしてTableViewに表示する

2007年12月6日木曜日
絶対Bindingで出来ると思いつつも、とりあえず回避してた標記問題なのですが、漸く解決して嬉しいので、自分用メモとして書いてしまいます。「そんな遠回りな方法じゃなくても・・・」という方、是非コメントお願いします。

Modelは前にも使ったようなやつで、こんな感じ。

model.jpg

そしてTableViewには日付順(pubDate順)に表示させようと思ってました。一体どこで制御するんだと思っていたら、TableViewとModelの間にあるControllerを使えばよかったんですね。コントローラーの設定画面で、Controller Content ParametersのSort Descriptersに、AppDelegateのキー(ここではdateSortという名前にしてみました)をバインディング

sortDescriptor.jpg

で、AppDelegateに以下のメソッド(?)を記述



def dateSort
sort = OSX::NSSortDescriptor.alloc.initWithKey_ascending("pubDate", false)
return OSX::NSArray.arrayWithObject(sort)

end



pubDateを別のアトリビュートにすれば、その属性でソートしてくれます。

(12/6追記)

あーこれだけだと、ソフトウェアを起ち上げてから、別の属性を選択したりすると落ちることに気づいてしまいました。。。kvc_accessor :dateSortを追加するとOKでしたが、他の属性を選択したときに変更が効きません。うーん、きっと何か方法があるはず。もう少し考えます。


0 コメント:

コメントを投稿