CoreDataの初期データをMagicalRecordで追加

スポンサーリンク

CoreData で最初からデフォルトで入れておきたい初期データを、AppDelegate.swift の中で MagicalRecord を使って追加する処理の例です。Rails でいう rake db:seed のような仕組みは、iOS/Xcode 開発ではないのでしょうかね?ちょっと良くわかりませんでした。

MagicalRecordをSwiftで使う導入〜設定までの手順 | EasyRamble

AppDelegate.swift の func application() で、MagicalRecord によって CoreData をセットアップする処理があるので、その直後に初期データ追加の処理を行うようにしました。このやり方が正しいかはあまり自信ありませんが、とりあえず動きました。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

— 環境 —
Swift 1.2
Xcode 6.3.2
MagicalRecord 2.2

初期データ用のファイルを用意

例として、以下のような初期データ用の CSV ファイルを用意します。昨日の Swiftでファイル読み込み&1行ずつ処理 | EasyRamble で使ったもの。

/path/to/data.csv

CSV のフォーマットは、:name(名前), :gender(性別), :country(出身国), :role(役職)となっています。

MemberProfile モデルを作成

MemberProfile という名前のモデル(NSManagedObject のサブクラス)を作成しておく。Xcode で AppName.xcdatamodeld から MemberProfile エンティティとその属性を作成して、NSManagedObject サブクラスのファイル(MemberProfile.swift)も作成しておきます。

MemberProfile.swift

このモデルを通して、CoreData を操作することになります。

AppDelegate.swift で初期データ追加の処理

用意した CSV ファイルを読み込んで、CoreData に追加します。具体的には AppDelegate.swift の func application() での MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed() 呼び出しの直後に、CoreData の中身が空の場合には、ファイルから読み込んだデータを CoreData に追加する処理を書きました。初期データがセット済みかをチェックして、2回目以降の起動では処理をスキップ。

AppDelegate.swift

println() のコードは、とりあえず Xcode コンソールでの確認用。MagicalRecord は、Rails の ActiveRecord とほぼ同じ感覚で使えるので、とても使いやすいです。MR_ の接頭辞で始まる MagicalRecord の API をいくつか利用していますが、読めばだいたい分かるかと思います。

SQLite データのファイルを前もって用意した後に、その SQLite ファイルをコピーする方法も使える模様。データ数が多くて初期データ追加の処理が長くかかる場合は、こちらの方法を使ったほうが良さそうです。

MagicalRecordでSQLite初期データをコピーする – ほげほげ(仮)

スポンサーリンク
 
スポンサーリンク

Leave Your Message!