えむじぃのアプリ開発

えむじぃのアプリ開発

元大手IT企業SE、現ベンチャー企業CTOのブログです。

【Swift】Realm Databaseの使い方

今回はモバイルアプリのデータ保存やデバイス間データ同期をサポートするRealm Databaseの使用方法をこの記事で説明します。

この記事のポイント・Realmのインストール
・モデルの作成
・Realmのデータ追加、削除、変更

インストール

Podfileに以下のように設定します。

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'sample' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  pod 'SwiftyJSON'
  pod 'Alamofire', '~> 4.7'
  pod 'RealmSwift'          ← ここに追加

  # Pods for sample

  target 'sampleTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'sampleUITests' do
    # Pods for testing
  end

end

 

設定後、以下のコマンドを実行します。

pod repo update
pod install

これでRealmライブラリのインストールは完了です。

モデルの作成

以下のようにモデルをクラスとして作成します。

import RealmSwift

class Event: Object {
    @objc dynamic var keydate: String = ""
    @objc dynamic var name: String = ""
    @objc dynamic var screen_name: String = ""
    @objc dynamic var birthday: Date!
    @objc dynamic var icon: String = ""
    @objc dynamic var event: String = ""
}

これでモデルの作成は完了です。

Realmのデータ追加、削除、変更

データ追加

以下のように追加処理を実装します。

private var realm: Realm!

func addEventData(keydate: String) {
  try! realm.write {
    realm.add(Event(value: ["keydate": keydate]))
  }
}

 

データ削除

以下のように削除処理を実装します。

private var realm: Realm!
private var eventList: Results!

func deleteEventData(at idx: Int) {
  try! realm.write {
    realm.delete(eventList[idx])
  }
}

 

データ変更

以下のように変更処理を実装します。

private var realm: Realm!
private var eventList: Results!
private var token: NotificationToken!
@IBOutlet weak var tableView: UITableView!

override func awakeFromNib() {
  super.awakeFromNib()

  // 更新チェック
  realm = try! Realm()
  eventList = realm.objects(Event.self)
  token = eventList.observe { [weak self] _ in
    self?.reload()
  }
}

func reload() {
  tableView.reloadData()
}

これでデータの追加、削除、変更は完了です。