スポンサーサイト

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

インデックス作成ツール/Core DataとCocoa Bindingの仕組み(その1)

 とりあえずプログラムを動かすところまで進んだので、少し仕組みについて説明しよう。この部分は知らなくてもある程度までは作れてしまうんだけど、やっぱりどうしてそうなっているのかを知っておいた方が良いだろう。
 OSXでプログラムを動かす仕組みはいくつかあるのだが、今回使ったのはAppleがCocoaと呼んでいる仕組みだ。Cocoaではいろいろな部品を、まるでレゴや電子ブロックのように繋ぎ合わせてプログラムを作っていく。今まで作ってきたプログラムでもNSTableViewやNSTextFieldといったレイアウト上の部品や、AlbumControllerといった部品を使ってきた。これらの部品はオブジェクトと呼ばれている。オブジェクトには、テーブルやボタン、テキストフィールドのように、プログラムを動かす時に眼に見えるものもあるし、AlbumControllerのようにプログラムの中にあっても画面には出てこないものもある。
 実は、AlbumエンティティやSongエンティティも画面には出てこないが一つのオブジェクト(部品)なんだ。もう一度、データモデリングの時に使った画面を思い出してみて欲しい。

 このエンティティ編集の画面の右側に書かれていた、NSManagedObjectというのが(NSTableViewやNSTextFieldと同じく)部品の種類を表している。エンティティの属性や、関係を決めていく作業というのは、実は、テーブルのカラム数や、ボタンに描かれる文字などをInterface Builderで決めているのと同じように、プログラムで使う部品(オブジェクト)をどんなものにするか、という設定であったわけだ。

 しかし、エンティティオブジェクトには、レイアウトウィンドウにあったテーブルやボタンとは違う特徴を一つ持っている。ウィンドウに配置されたオブジェクトというのは、プログラムが動き始めて、ウィンドウが表示された時に自動的に作られ、ウィンドウが消える時に消される。しかし、エンティティオブジェクトはユーザーが「+」ボタンをクリックした時に作られ、「ー」ボタンが押された時に消される。また、メニューを使ってファイルに保存したり、ファイルから読み込んだりすることも出来る。さらに、プロパティの内容を編集したり、編集の取り消しややり直しをしたりすることも出来る。
 このような動きを可能にするために、エンティティオブジェクトという部品を作ったり削除したり編集するための部品(=オブジェクト)がある。それがNSManagedObjectContextという種類のオブジェクトだ。Cocoa Bindingを行う時に、最初にAlbumControllerに対してBindを行ったのが、managedObjectContextだったことを覚えているだろうか? これがそのオブジェクトだったわけだ。

 次回は、実際これらのオブジェクト達の間でなにが起きているのかを説明しよう。
スポンサーサイト

Comment

Post comment

Secret

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