Realm1.0入門 with Xcode7.3
iOSアプリ開発時、DB選択肢のひとつとして挙がるのがRealm
国内でのコミュニティも活発で、初心者でも取っ付き易い雰囲気があります。
当然realmでweb検索すると、情報は山程出てきますが、objc時代の名残を引きずったTipsが多くあり、 私自身迷ってしまう事がありました。
そこで、2016/June現在最新の手順をここに記します。
cocoapodsをインストール
cocoapods
ターミナルから、Xcodeプロジェクトのディレクトリへ移動をして
pod init
上記コマンドでcocoapods設定ファイルを作成します。 作成されたpod fileを書き換えます。
# Uncomment this line to define a global platform for your project # platform :ios, '9.0' target 'プロジェクト名' do # Comment this line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! pod 'RealmSwift' end
その後ターミナル上で
pod install
コマンドでRealmをインストールします。 cocoa podsのバージョンが古いとRealmのインストールに失敗するので注意してください。
再度Xcodeのプロジェクトディレクトリへ移動するとプロジェクト名.xcworkspaceというファイルが作成されています。
プロジェクトを開いたら、Realmの動作確認のため、⌘+shift+Kでプロジェクトをクリーン後⌘+Bでプロジェクトをビルドします。
クラスの定義
テストクラスを作成します。
import Foundation import RealmSwift class Test: Object { dynamic var id = "" dynamic var name = "" }
これでRealmを使用する準備が整いました。
CRUD
最低限必要なCRUDだけ押さえておきましょう。
func create(){ let test = Test() test.id = "1" test.name = "ringo" let realm = try! Realm() try! realm.write{ realm.add(test) } }
read
func read(){ let realm = try! Realm() // testクラスのオブジェクトを取得。フィルターに条件を指定できる let result = realm.objects(Test).filter("name = 'ringo'") //resultには取得されたオブジェクトの配列が代入される for obj in result{ print(obj.name) //ringo } }
update
func update(){ let realm = try! Realm() // Testクラスのオブジェクトを取得。フィルターに条件を指定できる let result = realm.objects(Test).filter("name = 'ringo'") //resultには取得されたオブジェクトの配列が代入される result[0].name = "orange" try! realm.write{ realm.add(test) } }
delete
func delete(){ let realm = try! Realm() //テストクラスのオブジェクトを取得 let ringo = realm.objects(Test).filter("name = 'ringo'") try! realm.write{ //削除したいオブジェクトを渡す realm.delete(ringo) } }
その他
RealmBrowserで作成したテーブルを見れます。
どこに参照するスキーマがあるかはこれを使用すると簡単
或いはviewDidLoad()で出力
override func viewDidLoad() { // for swift 2.0 Xcode 7 print(Realm.Configuration.defaultConfiguration.fileURL!) }
RealmBrowserでcvsファイルを読み込んでテーブルを作成することも可能です。 テストデータをジェネレイトする機能もついています。
データベース作成するなら正規化をしっかりしましょう。