1 対多の関係を形成する 2 つのクラスがあります。
class FooA: Object {
dynamic var someAValue: String
let fooBList = List<FooB>()
}
class FooB: Object {
dynamic var someBValue: String
}
この方法でオブジェクトを Realm に追加します。
let fooA = FooA()
fooA.someAValue = 'a value'
let fooB = FooB()
fooB.someBValue = 'a value'
fooA.fooBList.append(fooB)
let realm = try! Realm()
try! realm.write {
realm.add(fooA)
}
すべてがうまくいき、オブジェクトが Realm に挿入されます。ただし、次のように FooB オブジェクトにアクセスしようとすると:
fooA.fooBList[0]
ブームになり、アプリがクラッシュします。したがって、明らかに、関係オブジェクトを Realm に正しく挿入しなかったため、関係が破損しています。Realm のドキュメントで何が欠けていましたか? 最初に配列を作成し、それを別の方法で親オブジェクトに追加する必要がありますか?
私の質問を更新するために、これは爆破したい操作です:
FooApiClient.getFooAObjects()
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .default))
.observeOn(MainScheduler.instance)
.subscribe { [weak self] in
switch $0 {
case .next(let fooAObjects):
self?.fooAObjects = fooAObjects
case .completed:
self?.fooTableView.reloadData()
loadingView?.hide()
case .error(let error):
loadingView?.hide()
self?.handleError(error)
self?.showNoFooView()
}
}
.addDisposableTo(disposeBag)
呼び出し: self?.fooTableView.reloadData() により、テーブル ビューは、取得された foo オブジェクトを表示しようとし、BOOM がどこに行くかを示します。