コードのこの部分でクラッシュが発生しました:
SRNetwork.provider
.request(SRService.postData(user_id: userId))
.mapArray(STrain.self)
.observeOn(ConcurrentDispatchQueueScheduler.init(queue: SDispatchQueue.dataTrain.getQueue()))
.subscribe({ (event) -> Void in
switch event {
case .next(let response):
self.train.value = response
SRealmTrain.sharedInstance.cacheTrain(response)
case .error(let error):
SRealmTrain.sharedInstance.fetchTrainRx(userId) //CRASH IS HERE
.bindTo(self.train)
.addDisposableTo(self.disposeBag)
print("\(error)")
default: break;
}
})
.addDisposableTo(disposeBag);
問題は、私がMainScheduler.instance
rxRealm を監視していないことだと思いますmain thread
が、私はそれを望んでいません。それを修正することは可能ですか?
fetchTrainRx :
public func fetchTrainRx(_ userId: String) -> Observable<[STrain]> {
let predicate = NSPredicate(format: "userId == %@", userId)
if let realm = realm {
return Observable.from(realm
.objects(SRTrain.self)
.filter(predicate)
.sorted(byProperty: "order", ascending: true))
.map ({
$0.map(STrain.init)
})
}
return Observable.just([]);
}