昨日はまったこと

2007-04-22 00:00



例によって誰かの参考になるかと思いはまった事を書いておく。興味のない人には全く意味のないことなので読み飛ばしてください。


NSTableViewの中にNSPopupButtonCellをいれて選択させようと考えた。あれこれ見た末まずAppleのサイトにちゃんとTutorialがあるのを知る。やってみるがうまくいかない。


次にhttp://www.venus.dti.ne.jp/~mugicha/cocoa-days/2005-09.htmlを見つけた。サンプルプログラムはちゃんと動く。なぜ私のは動かない。具体的には





[<NSTableColumn 0x5cd40b0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key value.



というエラーがでる。UndefinedKeyにbindingしていると怒られてるのだが、何が気に入らないのかわからない。せめて「これがわからん」と出してくれればいいのに。


しょうがないからあれこれやり出す。NSPopUpbuttonCellをいれたNSTableViewColumnのバインドを一つずつ外していくが、全部外してもまだ同じエラーがでる。どういうことだ?


頭にきて「元の普通の表示に戻そう」としたところで問題に気がついた。最初NSTableColumnのvalueにバインディングをしていた。それをNSPopupButtonCellに変えようとしたわけだ。


そのとき、元々のBindingはそのままにしておいた。というかNSPopUpButtonCellをDrag and Dropした時点でBindingの表示がそれ用に変わるのだ。


変わるのだが、Bindingの設定自体は裏で生きている。というわけで、こちらはNSPopUpButtonCell用のバインディングはちゃんとしているのだが、元のvalueが見つからない、と怒られていたわけだ。


それを外すと簡単に動いた。まあこういう事はある。ここに書いておけば、誰かが同じ事でハマるのを少しは軽減できないかな。。