NSArrayController

NSTableView * NSArrayController && !CoreData

今まで、NSTableViewとNSArrrayControllerを使うときは、CoreDataと一緒にしか使ったことがなかった。
ただ、そんないつもCoreDataが必要ということはないので、勉強もかねてPlainなオブジェクトと一緒に使ってみる。

参考:Takeba.me: ビュー・ベースのNSTableViewをさわってみたよ
※ 記事の本題とは違いますが、CoreDataを使わないサンプルとして参考になりました
なお、サンプルコードのリポジトリがこっちに変わっているようでした。
takebayashi/ViewBasedTableSample · GitHub

下準備

  1. プロジェクト作成
  2. 「MainMenu.xib」を開く
  3. Windowに「NSTableView」を追加。「Columns」を1にしておく
  4. Objectsに「NSArrayController」を追加。「arrayController」としてAppDelegateにOutlet接続

NSTableColumnとNSArrayControllerをBind

  1. ValueのBind toを「Array Controller」に
  2. Model Key Pathを「name」に

Modelオブジェクトの作成

  1. NSObjectを継承したクラスを作成
  2. Publicな「name」プロパティを追加

ArrayControllerにデータをセット

applicationDidFinishLaunching:で以下のようにarrayControllerにデータを設定。

これでTableViewに30件のデータが表示される。

ArrayControllerが面倒を見てくれるので、DataSourceの設定はいらない。
絞り込みとかも簡単にできる。

例えば、NSSearchFieldを使う場合、

  1. Windowに「NSSearchField」を追加
  2. SearchのBind toを「Array Controller」に
  3. Predicate Formatに「name contains $value」を指定

とするだけで、インクリメンタル検索ができるようになる。

うん、シンプルでいい感じ。
ちょっとは理解できてきたかなぁ。

あ、プロジェクトは一応こちらに置いてます。
tnantoka/ArrayControllerPractice · GitHub

それでは。

 Scroll to top