Quantumleap
375 words
2 minutes
RealmOptionalがRealmPropertyになっていた

RealmSwift#

最近 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
    }
}

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

記事は以上。

RealmOptionalがRealmPropertyになっていた
https://fuwari.vercel.app/posts/2021/06/realmoptional/
Author
tkgling
Published at
2021-06-30