0

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 がどこに行くかを示します。

4

1 に答える 1