Swift: Core Data についての概要

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

一方、扱うデータの構造が複雑で、アプリからユーザーの入力した情報を保存したり、任意の条件で入力した情報の検索結果を返したい場合、メモリ等のパフォーマンスを考慮し Core Data を使用することになるかと思います TRUST(トラスト) ホンダ エリシオン プラグ [メール便送料無料]Greddy レーシングプラグ イリジウムチューン 熱価8番 2007/1~2012/5 エリシオン/エリシオンプレステージ RR5/RR6 ■エンジン:J35A (SOHC・i-VTEC) ■排気量:3500 6本セット。

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

CARMATE(カーメイト)エンジンスターターセット TE-W5100 【TE64】 ディオン H12.01~H18.03 CR系
ランドクルーザー70/5人乗り/ロング/トヨタ(H2/1~16/7)純正形状タイプフロアマット【お買い得モデル・エコ】全座席分■耐久性・耐摩耗性に優れた安心の日本製/車種専用オリジナルフロアマット!【マラソン!全品2倍以上&特別クーポン!】KARO/カロ QUEST/クエスト ヴィッツ/SCP10、NCP1# 3DR、AT、ストッパーホール2個用、RS除く 商品番号:1423.ビルシュタイン ハイパフォーマンスショック B6 リア BE5-2570×2 シボレー エクスプレス/サバナ3500 トラック&SUV 2WD 1996年~2002年,THULE スーリー フォード フィエスタ 5ドア 14~ ルーフキャリア取付1台分セット TH7105+TH7113B+TH5087セット

CARMATE(カーメイト)エンジンスターターセット TE-W5100 【TE64】 ディオン H12.01~H18.03 CR系

目次

  • 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 の中身を見て行きたいと思います ACRE ブレーキパッド ■アクレ フォーミュラ700C フロント 【品番:624】 トヨタ ウィッシュ ZNE10G 03.1~09.4 リヤはディスク車のみ設定有。
Core Data のクラスで代表的なものは以下のとおりとなります。

ディオン CR系 TE-W5100 TE-W5100 H12.01~H18.03 CARMATE(カーメイト)エンジンスターターセット ディオン 【TE64】

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

NSManagedObject

データベースのレコードに相当するものです。
エンティティクラス、モデルクラス、テーブルのレコードといったモデルデータ全体の設定を行います IMPULSE CR-Z カーボンボンネット 素地 クリア塗装済み。

NSManagedObjectModel

エンティティ同士の関連を管理するクラスです RSR☆ ダウンサス Ti2000 エスティマ ACR30W 1台分セット 新品 RSR T723TW。データベースの構造(スキーマ)に相当するもので、属性(フィールド)や関係(表)の関連といったモデルの定義をおこないます。
アプリそのものの根幹となる部分です。

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 :