概要
Swift2 で Coredata を簡単に操作することができる MagicalRecord の使い方を紹介します
環境
- Mac OS X 10.11.5
- Xcode 7.3.1
- Swift 2.2
- MagicalRecord 2.3.2
ライブラリのインストール
Cocoapods を使います
以下のように Podfile に追記します
target 'gateway' do
pod "MagicalRecord"
end
- pod install
でインストールしてください
Entity の作成
Entity はいわゆるテーブルになります
xcdatamodeld ファイルを選択します
Add Entity を選択します
新規で追加された Entity を好きな名前に変更します
Attribute の追加
Attribute はいわゆるカラムになります
「+」を選択して新規で Attribute を追加します
名前とタイプを好きな値に設定します
好きな数だけ Attribute を追加してください
Model ファイルの作成
File -> New -> File からモデルファイルの作成を行います
iOS -> Core Data -> NSManagedObject subclass を選択して Next を選択します
対象のプロジェクトを選択します
モデルファイルを作成する Entity を選択します
先ほど作成した Entity を選択してください
ファイルの保存先を選択します
言語は Swift を選択します
問題なければ「Create」を選択します
「BLE+CoreDataProperties.swift」と「BLE.swift」という 2 つのファイルが作成されていることを確認してください
操作
ここまでできたらあとは各種 ViewController 内で利用するだけです
全データ取得
指定したクラスの配列が返ってきます
func searchBLE() {
let bles = BLE.MR_findAll() as! [BLE]
for ble in bles {
print(ble.id)
print(ble.peripheral_uuid)
print(ble.service_uuid)
print(ble.chracteristic_uuid)
}
}
キーを指定して取得
指定したクラスの配列が返ってきます
対象のデータが 1 つでも配列になります
func searchBLE(id) {
let bles = BLE.MR_findByAttribute("id", withValue: id) as! [BLE]
print(bles[0].name)
}
データの保存
各種フィールドにデータを設定して saveToPersistentStoreAndWait をコールします
func registBLE() {
let ble = BLE.MR_createEntity()
ble?.id = NSUUID().UUIDString
ble?.peripheral_uuid = ""
ble?.service_uuid = ""
ble?.chracteristic_uuid = ""
ble?.managedObjectContext?.MR_saveToPersistentStoreAndWait()
}
データの削除
削除でも saveToPersistentStoreAndWait をコール必要があります
func deleteBLE(ble: BLE) {
ble.MR_deleteEntity()
ble.managedObjectContext?.MR_saveToPersistentStoreAndWait()
}
最後に
一度使い方を覚えたら結構簡単です
登録したデータの中身を print 以外で確認する方法ってあるのかな
Xcode 上とかで確認できるとデバッグとかやりやすそう
Swift3 (xccode8) の場合 NSManagedObject subclass は Editor -> Create NSManagedObject Subclass から作成するようになっています
返信削除また手順として AppDelete.swift に
返信削除import MagicalRecord
とデータベースを初期化する
MagicalRecord.setupCoreDataStack(withAutoMigratingSqliteStoreNamed: "db.sqlite")
が抜けているので設定してください
下は didFinishLaunchingWithOptions 内に記載すれば OK です