Core Data
GAエントリーからの課題、今日は、Core Data です。
背景
SQLiteは、アプリにデータベース機能を提供するということで、非常に有効。同時にSQLのステートメントを書いたり、データベースの構造を管理しないといけない、などオブジェクト指向ではないというSQLite(relational型)の特性からくる複雑さがあるのも事実。そこを踏まえて、Appleが、Core Data Frameworkを提供した。
Core Dataは、SQLiteなどのデータ保存のwrappperを保有する、データベースに関する知識を必要としないFramework。
とのことです。実際に使ってる。
詳しい説明
Step by Step
1) New projectを作成するときに、"Use Core Data"にチェック。
ここを気づかずに、少しハマりました。
すると、".xcdatamodeld"ファイルがプロジェクトに追加さています。
2) Entity editorから、アトリビュードを追加する
ここは、SQLiteと比べるとわかりやすいですね。
3) ManagedObjectサブクラスを作成
データモデルは、NSManagedObjectクラスのサブクラスとしてrepresentedされるので、NSManagedObjectサブクラスを作成します。
Entity Editor-->Editor-->Create NSManagedObject Subclass
これで、作成したEntityのためのNSManagedObjectのサブクラスクラスができました。
4) Entityのクラスの名前を変更
Classには、アプリケーションの名前をEntityの名前の前に入れるように変更する。ちなみに、入れなくても動いた。。
5) 準備完了。コーディング。
Step.1) Obtain the managed object context
Step.2) Get an Entity Description
Step.3) Generate a managed Object Subclass
Step.4) Set the attrbutes of a managed object
Step.5) Save a Managed Object
雑感
Core Dataについての理解が深まりました。コードに関してはもうこういうもの!とひとまず腹をくくって進みます。。いろいろ調べてみると、”Use Core Data"のチェックボックスは、x-codeの古いバージョンにはないようで、その時点の解説では、”Link Binary With Librarires"から”coredata.framework"を入れていました。
また、プロジェクト作成時にチェックボックスが出てくるので、Google Analytics SDKのようにすでに完成されているアプリに入れる場合は、”Link Binary With Librarires"からCore Dataを追加する必要がありそうです。
つまりGoogle Analyticsは、SQLiteとCore Dataフレームークを両方使って計測ログをローカルに保存している。ということでしょう。両方使う必要はないんじゃないかな。。バージョンの進化の名残?どういうことでしょう。