LoginSignup
1
0

More than 5 years have passed since last update.

Realm「基礎」の「基礎以外」

Last updated at Posted at 2018-04-12

Realmでよく使うけどあんまり書かない集?

全くコアではないが必ず使うわけでもないくらいのものをメモしていこうと。

ソート

realm = try! Realm()
var questions = realm.objects(Question.self)
//byKeyPathに並び替えたいものを入れる
var sortedQuestions = questions.sorted(byKeyPath: "registeredDay")
//逆順
var sortedQuestions = questions.sorted(byKeyPath: "registeredDay", ascending: false)

昇順(ascending)、降順のイメージ

昇順(asc) 1 2 3
降順(desc) 3 2 1

マイグレーション

AppDelegate.swift
// AppDelegate.swiftのapplication(application:didFinishLaunchingWithOptions:)の中に書く

let config = Realm.Configuration(
    // 新しいデータベース構造のバージョンを宣言。
    //バージョンは以前使っていたバージョンよりも大きいものにする(まだマイグレーションをしたことがないときのバージョンは0)
    schemaVersion: 1,
    // 新しいバージョンに書き換えらる時に自動的に呼ばれるブロックを引数に渡す
    migrationBlock: { migration, oldSchemaVersion in
        // まだマイグレーションをしたことがないのでoldSchemaVersion == 0
        if (oldSchemaVersion < 1) {
            //ここにマイグレーションする時のコードを書く
            migration.enumerateObjects(ofType: Person.className()) { oldObject, newObject in
                // 昔のオブジェクトのカラムを用いて新しいオブジェクトのカラムを生成
                // この場合firstNameとoldNameから一つのカラムにまとめている
                let firstName = oldObject!["firstName"] as! String
                let lastName = oldObject!["lastName"] as! String
                newObject!["fullName"] = "\(firstName) \(lastName)"
            }
        }
    })

// デフォルトで呼ばれるRealmに今回設定したバージョンのものを設定
Realm.Configuration.defaultConfiguration = config

// これでマイグレーションは完成したのでもうRealm()を呼べる
let realm = try! Realm()
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0