【特集】
ここまで、コントローラレイヤであるCocoa Binding、モデルレイヤに位置するCore Data、そしてこれらの間をつなぐためのキー値コーディングを説明してきた。
必要な部品は出そろった。最後に、新しくなったCocoaアプリケーションは、これらをどのように協調動作させるのか、全体像を見てみることにしよう。
まず、全体像を説明しよう。下の図のようになる。CocoaのMVCアーキテクチャは、この図にあるように、モデルとビューの間をコントローラでつなぐ、いわばM-C-Vとでもいう構造になっている。
|
|
Cocoa MVCアーキテクチャ全体像 |
下から順に説明していこう。まず、図で一番下に位置するのは、モデルレイヤだ。Core Dataが受け持つことになる。オブジェクトグラフの管理、ディスクへの書き込み等を行う。
モデルとコントローラの間には、仲介役となるオブジェクトが存在する。これは、アプリケーションのタイプによって異なる。アプリケーション全体で1つのドキュメントしか扱わない場合は、アプリケーションのdelegateが行う。複数のドキュメントを作成する場合は、ドキュメントを表すクラスであるNSDocumentのサブクラスの、NSPersistentDocumentが行う。
このクラスは、プログラマが作成するクラスであり、ここを起点として、アプリケーションの拡張を行う。逆に言えば、ここ以外はほとんど触る必要が無い、ということだ。管理対象オブジェクトの作成等は、ここで制御する。
その上にあるのが、コントローラレイヤだ。ここは、NSObjectControllerのサブクラスたちが位置する。コントローラレイヤの役割は、何度も説明しているように、ビューとモデルの同期を行うことだ。そのために、Cocoa Bindingが使われる。ビューとのバインディングは、従来通りのものが使われる。モデルとの同期には、さきほど説明した、デリゲートオブジェクトかNSPersistenDocumentへのバインディングが使われる。これは、次項で詳しく説明しよう。
コントローラレイヤで使われるクラスは、ビューのタイプによって使い分ける。1つのオブジェクトとバインディングするためのNSObjectController、オブジェクトの配列を取り扱うためのNSArrayController、そして木構造のオブジェクトを取り扱うNSTreeCotnrollerがある。
一番上に位置するのが、ビューレイヤになる。ビューは、コントローラと同期することで動作させる。このレイヤ間のバインディングは、Interface Builderで行うことになる。
これで、ビューからコントローラを経由して、モデルへと至る道ができあがった。
前項のうち、コントローラとモデルの接続について、もう少し詳しく説明しよう。
まず、モデルへの接続は、すべて管理対象オブジェクトコンテキストを経由して行われる。このクラスが、コントローラとのやり取りをすべて取り仕切ることになる。具体的には、コントローラで管理対象オブジェクトコンテキストとのバインディングを行っている。コントローラにはmanagedObjectContextというバインディング項目があり、ここで接続している。
|
|
managedObjectContextのバインディングの設定 |
また、コントローラは、オブジェクトの作成を行う。管理対象オブジェクトの作成には、Core Dataの項で説明したように、管理対象オブジェクトコンテキストに加えて、エンティティが必要だ。そのために、コントローラにエンティティを設定することができる。この設定に従って、コントローラは自動的に対応する管理対象オブジェクトを作成し、それをコンテキスに登録してくれる。
それに加えて、NSArrayControllerやNSTreeControllerといった複数オブジェクトを取り扱うコントローラには、Predicateを設定することができる。これで、表示するオブジェクトを、自動的にクエリーを使って取り出すことができる。
|
|
コントローラへの、エンティティとPredicateの設定 |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
| マイナビ、3月より書籍連動型のクリエイティブ・デザイン系セミナー開講 [12:00 2/10] |
| Linux Mint 12 KDE登場 [10:26 2/10] |
| Dell、重複排除により最大98%のデータ削減が可能なバックアップストレージを発売 [09:44 2/10] |
| 北大、「ポジトロン断層撮影法」による脳腫瘍の性質を診断する手法を開発 [09:40 2/10] |
|
天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] エンタープライズ |
|
カシオ、子供の入園/入学にぴったりな[お名前・似顔絵シール]印刷サービス [17:38 2/10] 家電 |
|
[次にくるマンガ特集]ニコニコ静画でランキング上位の第1話を無料配信 第1弾「ドリフターズ」 [17:29 2/10] ホビー |
|
坂ノ睦と中原開平、ゲッサンで2名の新連載がスタート [17:22 2/10] ホビー |
|
TVウォッチャーの芸能まるごと1週間 - メイサ&赤西結婚、花子妊娠に沸いた [17:10 2/10] エンタメ |