【特集】
これで管理対象オブジェクトを利用するためのクラスは出そろった。続いて、オブジェクトを作成、編集するための手順を説明しよう。管理対象オブジェクトは、通常のオブジェクトは違う方法で初期化して、保持する必要がある。
アプリケーションでCore Dataを利用するには、まず、管理対象オブジェクトモデル、永続ストアコーディネータ、管理対象オブジェクトコンテキストを用意する必要がある。
管理対象オブジェクトモデルには、アプリケーションで扱うエンティティをすべて読み込ませる。通常、エンティティは.xcdatamodelファイルに記述してあるので、これを読み込むことになる。永続ストアコーディネータは、ファイルへの書き込みを行うものなので、ファイルを指定して初期化する。管理対象オブジェクトコンテキストは、この永続ストアコーディネータを指定して初期化する。
開発時には、これらの初期化はテンプレートで用意されるコード内で行われる。これで、Core Dataを利用する舞台が整ったことになる。
では、いよいよ管理対象オブジェクトモデルを作ってみよう。
まず、エンティティを取り出す。エンティティは、NSEntityDescriptioinというクラスで表現される。管理対象オブジェクトモデルから、このクラスを取り出すことができる。NSEntityDescirptionは、対応する管理対象オブジェクトクラスの名前を持っている。
これが、目的となる管理対象オブジェクトだ。このクラスをインスタンス化する。この初期化時に、管理対象オブジェクトコンテキストを指定することになる。これで、管理対象オブジェクトをコンテキストに挿入できる。
この一連の流れは、次のようなコードになる。
また、これらのことをまとめて処理してくれるメソッドもある。実際には、こちらを使うことになるだろう。NSEntityeDescriptionのクラスメソッドである、insertNewObjectForEntityName:inManagedObjectContext:だ。エンティティ名とコンテキストさえ指定すれば、管理対象オブジェクトのインスタンスを作ってくれる。
作成したオブジェクトを削除したいときは、管理対象オブジェクトコンテキストのdeleteObject:メソッドを使う。管理対象オブジェクトは、コンテキストに登録されるので、そちらから削除をすることになる。
作成した管理対象オブジェクトは、すべてコンテキストに登録される。では、取り出すときはどうするのか?これは、オブジェクトを指定するリクエストを作成して、それに適合するオブジェクトの集合をとりだすことになる。つまり、これはデータベースでいうところの、クエリーである。
オブジェクトを指定するには、文字列で式を記述する。具体的には、次のような式や演算子が使える。
このような式で、オブジェクトを取り出すのである。
リクエストを作成するには、NSFetchRequestクラスを、式の指定にはNSPredicateクラスを使う。たとえば、Appleからのメールを取り出すリクエストは、次のように作成する。
このようにして作成したリクエストは、コンテキストに対して送る。結果は、オブジェクトの配列の形で受け取ることができる。
オブジェクトは、管理対象オブジェクトコンテキストの、save:メソッドを使ってファイルに保存する。コンテキスには、永続ストアコーディネータが関連づけられているので、それに設定してあるファイルに保存することになる。
保存する形式は、XML、バイナリ、SQLから選択することができる。それぞれの特徴は、以下の通りである。
SQLの利用は、特に大規模なデータを取り扱うときに有利になるだろう。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
坂本教授、木の光合成に着目した不思議な音楽的挑戦!『ETV特集』 [10:08 2/11] キャリア |
|
バロックで異端!水墨画の巨匠、雪村周継の神業に迫る! [10:07 2/11] キャリア |
|
元・宝塚の真琴つばさ、ドラマ初主演で小学生の母親役に挑戦! [10:07 2/11] キャリア |
|
「四大陸フィギュア」今夜は連覇のかかった高橋、昨年末復活した浅田、村上に注目! [10:07 2/11] キャリア |
|
【EU発!Breaking News】精神疾患治療のため?マラリア患者の血液を注射された男性。(オーストリア) [10:05 2/11] キャリア |