Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@nasutaro211

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

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()
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?