Swift

Swift:表のカラムデータを取り出して修正

NSTableViewのカラムデータを直接触って修正する方法についてのメモです。

func tableView(aTableView: NSTableView, setObjectValue anObject: AnyObject?, forTableColumn aTableColumn: NSTableColumn?, row rowIndex: Int) {   

  • このメソッドの中に必要な処理を書いてカラムデータに関わる処理を行います。
  • データはanObject、行位置はrowIndexに入っています。

}

もしかするとまちがって理解しているかもしれませんが、ここでわかる行位置、カラムデータを参照にして、この同じtableViewを通常の表作成の方法で直接書き換えても問題がないようです。自分のケースの場合、入力されたカラムデータで写真のメタ情報をアップデート/書き換えしたあと、一旦、表を初期化し、再構成しても問題がありませんでした。

たとえば、メタ情報の場合、カラムデータを修正しても、実際にその修正が行われない(無効になってしまう)キーがいくつかあります。たとえば、元々の値A、修正した値Bが存在するとき、anObjectにはユーザーが修正したBが入ります。しかし、写真を再読み込みすればAのままですから、Bをそのまま表示させてしまうと不当になります。

それで、この{ }内の中で直接tableViewをAに変更したのですが、これで問題はありませんでした。それまで、Bが表示されたままになっていたのですが、値がAに戻り、見かけ上もOKになりました。

少し問題なのは、Bが存在するときはいいのですが、””(文字列なし/リターンして文字列を消したケース)では、やはりそのデータを抹消してしまいたいです。今まで、””はvalueエラーとみなしていたのですが、それはまずいです。修正します。

Categories: Swift, 技術