えいむーさんは明日も頑張るよ

RealmOptionalがRealmPropertyになっていた

価格

# RealmSwift (opens new window)

最近 RealmSwift のバージョンが上がったらしく、それに伴ってデータベースに保存するオプショナル型の扱いが変わりました。

調べてもドキュメントは 10.5.0 くらいまでしか対応してなかったので自分で新しいコーディング方法を調べました。

# RealmProperty

今までRealmOptionalを使っていたものがRealmPropertyに変わりました。それだけでなく、ちょっとだけ宣言の方法も変わったのでそれもご紹介。

// Deprecated
let zipcode = RealmOptional<Int>()

// Modern
let zipcode = RealProperty<Int?>()

要するにRealmOptionalRealmPropertyに書き換えて、明示的にオプショナルであることを宣言するようにすれば良い。

IntだけじゃなくてBoolにも使える、便利。

Optionalだけじゃなくて他にもアップデートがあって、UUIDNSUUIDも新たに保存できるようになったようです。

# Extension の書き方

型がIntではなくなったので Extension の書き方も変わりました。

例えば、強制的にアンラップするような以下のコードは次のように書き換えられます。

// Deprecated
extension RealmOptional where Value == Int {
    var intValue: Int {
        guard let value: Int = self.value else { return 0 }
        return value
    }
}

// Modern
extension RealmProperty where Value == Int? {
    var intValue: Int {
        guard let value: Int = self.value else { return 0 }
        return value
    }
}

まあそれだけで特に面白いところはなかったのですが。

記事は以上。

価格
    えいむーさんは明日も頑張るよ © 2021