Realmでデータを保存した後に直ぐに利用するとデータが保存されない
APIの値をRealmに保存して、Realmからデータを取得してという動作をさせたかったのですがうまく行かず質問させていただきます。
今回はhoge変数のget/setをRealmの操作とするようにしました。
しかし、set後に直ぐにgetをした際にデータが更新される前のデータになってしまいます。
保存(更新)が完了していないため、完了するまえのデータが取得してしまうのではないかと思っています。
これを回避する方法というのはありますでしょうか?あればご教授お願い致します。
Realmバージョン:3.10.0
- Realmオブジェクト Sample1
class Sample1 : Object {
@obj dynamic var value1: Int = 0
@obj dynamic var value2: Int = 0
init(value1: Int, value2: Int) {
self.value1 = value1
self.value2 = value2
}
}
- Sample1を利用している関数
var value1: Int {
get {
let realm = try Realm()
return realm.object(Sample1.self).first?.value1 ?? 0
}
set {
let realm = try Realm()
try realm.write {
let object = Sample(value1: newValue, value2: 0)
realm.add(object)
}
}
}
func viewDidLoad() {
self.apiCall()
let value = self.value1 // ここは0が取得される
}
func apiCall() {
let result = // APIコール
self.value1 = result.value1 // value1に5を入れるとする
}
}