我有两个类形成一对多关系:
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。