375 words
2 minutes
RealmOptionalがRealmPropertyになっていた
RealmSwift
最近 RealmSwift のバージョンが上がったらしく、それに伴ってデータベースに保存するオプショナル型の扱いが変わりました。
調べてもドキュメントは 10.5.0 くらいまでしか対応してなかったので自分で新しいコーディング方法を調べました。
RealmProperty
今までRealmOptional
を使っていたものがRealmProperty
に変わりました。それだけでなく、ちょっとだけ宣言の方法も変わったのでそれもご紹介。
// Deprecated
let zipcode = RealmOptional<Int>()
// Modern
let zipcode = RealProperty<Int?>()
要するにRealmOptional
をRealmProperty
に書き換えて、明示的にオプショナルであることを宣言するようにすれば良い。
Int
だけじゃなくてBool
にも使える、便利。
Optional
だけじゃなくて他にもアップデートがあって、UUID
やNSUUID
も新たに保存できるようになったようです。
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/