0

我有一个视图模型,它从我的 API 获取一些数据,当我取回数据时,我在 Realm 和视图模型上的两个 MutableProperties 中设置它

        userService.getBrowseData().on(
            failed: { error in
                // TODO: Should call a closure the VC passes in here with an error to show
            }, value: { banners, lists in
                browseStoreService.store(banners: banners, lists: lists)

                self.banners.value = banners
                self.lists.value = lists
            }
        ).startWithCompleted { self.dataLoaded.value = true }

在我的视图控制器中,我在实例化并设置ListViewViewModel

disposable += viewModel?.dataLoaded.producer
    .observe(on: UIScheduler())
    .startWithValues { loaded in
        if loaded {
            guard let viewModel = self.viewModel else { return }

            self.carousel?.reloadData()

            for list in viewModel.lists.value {
                let view = ListView()
                view.viewModel = ListViewViewModel(list: list)
                view.listViewDelegate = self
                view.listItemViewDelegate = self

                scrollingStackView.addArrangedSubview(view: view)

                constrain(view) { view in
                    view.width == view.superview!.width
                    view.left == view.superview!.left
                    view.right == view.superview!.right
                }
            }
        }
}

对我来说奇怪的是,我只是在领域中设置数据,我没有做任何额外的提取来将数据从领域中取出,这会导致崩溃,尤其是在写入尚未完成的情况下。

在这种情况下,我从 API 的响应中获取一个数组banners和一个数组lists,将它们发送到我storeService的域中以将它们设置为领域,并将这些相同的数组分配给它们各自的 MutableProperties。

知道这里会发生什么导致这次崩溃吗?

编辑:

store函数如下所示:

func store(banners: [Banner], lists: [List]) {
        let realm = try! Realm()

        do {
            try realm.write {
                realm.add(banners, update: true)
                realm.add(lists, update: true)
            }
        } catch {
            return
        }

        realm.refresh()
    }

并且两个模型都有一个主键id

4

0 回答 0