Swift: Core Data についての概要

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

一方、扱うデータの構造が複雑で、アプリからユーザーの入力した情報を保存したり、任意の条件で入力した情報の検索結果を返したい場合、メモリ等のパフォーマンスを考慮し Core Data を使用することになるかと思います 16インチルクラ カスタムL4#5系ENKEI パフォーマンスライン PF01 スパークルシルバー 5.0Jx16トランパス LUK 165/50R16。

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

アクティブ(ACTIVE)ACパフォーマンスライン ブレーキホース アルミ メッキ T2-TYPE (フロント) スモーク YZF-R6 99-00[32131273S] 通販店

16インチプレオL275、285系ENKEI パフォーマンスライン PF01 マットブラック 5.0Jx16トランパス LUK 165/50R16;16インチ サマータイヤ セット【適応車種:インプレッサ(GH系 ハッチバック 16インチ装着車)】WORK MCOレーシング タイプCS マットブラック 7.0Jx16ディレッツァ Z3 205/55R16;CUSCO(クスコ) street ZEROストリート ゼロ 全長調整式車高調 【リヤ8段調整】アッパーマウントレスステップワゴン RF3~7

アクティブ(ACTIVE)ACパフォーマンスライン ブレーキホース アルミ メッキ T2-TYPE (フロント) スモーク YZF-R6 99-00[32131273S];●アールエスアール / RS-R●N-BOX カスタム JF4 ダウンサス RS★R SUPER DOWN フロントのみ;【カヤバ】ショックアブソーバー Lowfer Sports KIT ( ローファースポーツキット ) MRワゴン 【 MF21S 】 キット(Kit)  品番 : LKIT-MF21S;DIXCEL HS-typeスリットディスクローター フロント用CD6アコード 93/9~97/9;カードでポイント最大34倍 3/21(木)20:00~3/26(火)1:59迄 DUNLOP ダンロップ WINTER MAXX 02 ウィンターマックス WM02 CUV スタッドレス スタッドレスタイヤ 225/55R18 ENKEI Racing RPF1 ホイールセット 4本 18 X 8 +35 5穴 114.3

RSR☆ ダウンサス Ti2000 エスティマ GSR55W 1台分セット 新品 RSR T503TW, スバル エクシーガ クロスオーバー7 YAM 17インチ アルミホイール 一台分(4本) LEONIS VX (レオニス ブイエックス) BMCミラーカット アルミ, キャリア車種別専用セット ダイハツ ブーンルミナス M500/M510 H20.12~H24.3 PIAA/Terzo EF14BLX + EB2 + EH384 & EA19, ACRE (アクレ) 品番:β621 ユーロストリート ブレーキパッド リヤ用 ベンツ CLK W208 208335 98.10~03.1, CUSCO (クスコ) type RS Spec-F LSD リア 1.5way(1.5&2way) Spec-F 品番:LSD 167 LT15 トヨタ クラウン マジェスタ 型式:JZS147 年式:1992.1~1995.8 カーメイト エンジンスターター ノート 5ドア H17.1~H18.12 E11系 インテリジェントキー・イモビ装着車 TE-W7300+TE26+TE438

目次

  • 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 の中身を見て行きたいと思います US GTウィング Rtunes 55 "S型ユニバーサルアルミGTダブルデッキスポイラーウィングシルバージープ Rtunes 55" Type S Universal Aluminum GT Double Deck Spoiler Wing SILVER Jeep。
Core Data のクラスで代表的なものは以下のとおりとなります。

アルミ T2-TYPE (フロント) スモーク メッキ YZF-R6 T2-TYPE アクティブ(ACTIVE)ACパフォーマンスライン 99-00[32131273S] ブレーキホース メッキ

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

NSManagedObject

データベースのレコードに相当するものです。
エンティティクラス、モデルクラス、テーブルのレコードといったモデルデータ全体の設定を行います 【エントリーでポイント15倍! 3/21 20:00-3/26 1:59】サマータイヤ アルミホイールセット 新品 4本SET ◆共豊 スマック スフィーダ KYOHO SMACK SFIDA◆185/60R15 15インチ (185-60-15)新品特選輸入タイヤ バランス調整済み! パーツ。

NSManagedObjectModel

エンティティ同士の関連を管理するクラスです 【エントリーでポイント5倍】245/40R18 MICHELIN ミシュラン X-ICE XI3 エックスアイス XI-3 Warwic DS.05 ワーウィック DS.05 スタッドレスタイヤホイール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 :