Swift: Core Data についての概要

アプリの設定等の保持するデータが単純で数が限られている場合、Swift: Core Data を使用しないデータの永続化について で説明した NSUserDefaults 等を使用すれば実現可能です。

一方、扱うデータの構造が複雑で、アプリからユーザーの入力した情報を保存したり、任意の条件で入力した情報の検索結果を返したい場合、メモリ等のパフォーマンスを考慮し Core Data を使用することになるかと思います 【送料無料】 165/55R14 14インチ KYOHO 共豊 カワイイデコル チェリーブロッサム 4.5J 4.50-14 YOKOHAMA ヨコハマ エコス ES31 サマータイヤ ホイール4本セット【YOsum18】。

今回はこの Core Data についての概要を自分に向けて説明したいと思います。

★Condenser・クーラーコンデンサーセミアッセンブリー★代表車種:トヨタ/ハイラックスピックアップ[RZN152/169]用参考純正番号:88460-35270新品・優良コンデンサーを格安プライスで!
ディクセル ブレーキローター PD(プレーンディスク) フロント左右セット ライトエース/マスターエース/タウンエース YR21G 3119187 DIXCEL ディスクローター ブレーキディスク【店頭受取対応商品】!ディクセル ブレーキローター PD(プレーンディスク) フロント左右セット ライトエース/マスターエース/タウンエース CR28G 3119277 DIXCEL ディスクローター ブレーキディスク【店頭受取対応商品】.【送料無料】 225/40R18 18インチ LEHRMEISTER レアマイスター ブルネッロ(ゴールド/リムポリッシュ) 7J 7.00-18 YOKOHAMA ヨコハマ DNA エコス サマータイヤ ホイール4本セット,TOYOTIRES トーヨー ナノエナジー3プラス NANOENERGY3plus サマータイヤ 205/55R16 HotStuff 軽量設計!G.speed P-03 ホイールセット 4本 16インチ 16 X 6.5 +48 5穴 100

★Condenser・クーラーコンデンサーセミアッセンブリー★代表車種:トヨタ/ハイラックスピックアップ[RZN152/169]用参考純正番号:88460-35270新品・優良コンデンサーを格安プライスで!

目次

  • Core Data とは
  • RDB(リレーショナルデータベース)とは
  • O/R マッピングフレームワークとは
  • Core Data の概要

Core Data とは

Core Data とは MVC デザインパターンの Model を担当する Mac OS X や iOS のデータを永続化するための フレームワーク です。
わかりやすく言えば、Core Data とは SQLite へデータの入出力を行う命令や処理がまとめられたもので、iOS (Mac OS X) と SQLite の橋渡しをおこなってくれるものです。

SQL コマンドがわからなくても、Objecive-C や Swift でオブジェクトを扱うようにデータを渡せば、SQLite にデータが保存され、SQLite のデータをオブジェクトとして処理することができるようになります。

他にも iOS (Mac OS X) から SQLite にデータの受け渡しをおこなう方法としては、 Objective-C の Wrapper ライブラリ FMDB を使用する方法があります。

また最近では SQLite 以外に、iOS や Android 等のモバイル環境に特化したデータベース Realm が注目されてますが、今回は Core data の説明なので、Realm については別の機会に記事にしたいと思います。

RDB(リレーショナルデータベース)とは

SQLite 等のデータベースのデータの中身は Excel のセルような構造になっていて、テーブルと呼びます。これは Swift でいうところのクラスに該当します。また、テーブルで構成されたデータの実体はレコードと呼ばれます。

Swift や Objecive-C であつかうクラスやオブジェクトの概念は、オブジェクト技術(オブジェクト指向)と呼ばれていますが、データベースの定義やテーブルやレコードでデータ構造を定義し、データの保存・抽出をおこなう技術を リレーショナル技術 と呼び、リレーショナル技術により構築されたデータベースを RDB(リレーショナル・データベース) と言います。

O/R マッピングフレームワークとは

オブジェクト技術リレーショナル技術 はどちらも データを扱うための技術 です 。なぜこのように2つの技術が分かれているのかは、それぞれが扱うデータがどこに存在するかで理解することができます。

アプリで実行されるオブジェクトはメモリ上のデータであるのに対し、RDB のテーブルやレコードはストレージ上のデータそのものを指します。

アプリでデータを永続化するには、HDD や SDD といったストレージへデータを保存する必要があります。そこで Swift や Objecive-C から RDB へデータを受け渡しをする Core Data が必要となってくるのです。

Core Data はオブジェクト(Object)とリレーショナル(Relational)のデータを置き換える役割を果たすため、O/R マッピングフレームワーク(O/R マッパー) と呼ばれます。

Core Data の概要

ここから具体的に Core Data の中身を見て行きたいと思います 【★送料無料キャンペーン中】 【D2 レーシングスポーツ】406 95~04 4 X 108ストリートキャリパー (ダストカバー付) 6 POT 330X32 フロー ティング。
Core Data のクラスで代表的なものは以下のとおりとなります。

★Condenser・クーラーコンデンサーセミアッセンブリー★代表車種:トヨタ/ハイラックスピックアップ[RZN152/169]用参考純正番号:88460-35270新品・優良コンデンサーを格安プライスで! ★Condenser・クーラーコンデンサーセミアッセンブリー★代表車種:トヨタ/ハイラックスピックアップ[RZN152/169]用参考純正番号:88460-35270新品・優良コンデンサーを格安プライスで!

データベースのテーブルに相当するものです。
エンティティの実体は XML で Xcode のモデルエディタで定義します。

NSManagedObject

データベースのレコードに相当するものです。
エンティティクラス、モデルクラス、テーブルのレコードといったモデルデータ全体の設定を行います 【受注生産】【アドミレイション/Admiration】 プリウスPHV/PRIUS 等にお勧め アルタモーダ シートカバー LUXURY ラグジュアリー・ストライプ (SSPU×SSPU) 型式等:ZVW52 品番:CS-T113-D。

NSManagedObjectModel

エンティティ同士の関連を管理するクラスです サマータイヤ 185/60R15 84H ダンロップ ルマン5 LM5 スマック バサルト 5.5-15 タイヤホイール4本セット。データベースの構造(スキーマ)に相当するもので、属性(フィールド)や関係(表)の関連といったモデルの定義をおこないます。
アプリそのものの根幹となる部分です。

NSManagedObjectContext

データベースのクエリに相当するものです。
Core Data では、このオブジェクトを使用しデータの検索・挿入・変更・削除・Undo / Redo といったデータの操作を行います。

NSFetchRequest

データの取得を行うときに使用します。1件だけのデータ取得であれば NSFetchRequest を使用すればいいかと思います。

NSFetchedResultsController

NSManagedObject オブジェクトを監視するコントローラクラスで、NSFetchRequest からデータの取得を行うときに使用します。
NSManagedObject オブジェクトが挿入・変更・削除された時に NSFetchedResultsControllerDelegate オブジェクトに通知します。
UITableView の indexPath に対応しているため、sectionrow などのデータにアクセスしやすくなります。

NSPersistentStore

データベースの抽象化クラスでデータベースの情報を管理します。

NSPersistentStoreCoodinator

NSPersistentStore を管理するクラス。データベースを複数管理する際にも使用します。
NSPersistentStore と NSManagedObjectContext を仲介するクラスで、NSPersistentStore クラスを使い、ファイルの読み書きを行ないます。

Core Data で使用するクラスやオブジェクトを図でまとめると以下のようになります。

まとめ

今回は Core Data の概要とデータベースについてざっくりと説明しました。次回は具体例として Core Data を使用し、ユーザーが入力した情報を表示するアプリを作成してみたいと思います。

この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Share it :