gpt4 book ai didi

ios - IGListkit 网络责任

转载 作者:行者123 更新时间:2023-11-28 17:30:59 26 4
gpt4 key购买 nike

使用 IGListkit 并且对抓取数据的职责有点困惑。

虚拟示例 - 假设我正在处理车辆类别,我想让一个部分 Controller 基本上处理某个类别的汽车品牌。

我的 View Controller 有品牌的概念,部分 Controller 将显示这些汽车品牌的型号列表:

  • 本田
    • 思域
    • 飞行员
    • 一致

在应用程序中,我需要进行网络调用以获取各个模型。

这个责任会不会是 View Controller ,本质上是多次调用 api,获取品牌的所有模型,构建模型,然后将它们传递给部分 Controller ?

或者 View Controller 只是将品牌(本田)传递给部分 Controller ,然后部分 Controller 负责进行网络调用并获取其所有品牌并重新加载自身?

最佳答案

IGListKit 处理对象数组来为它们创建必要的部分。我不会将所有网络都放在 UIViewController 类中,而是 - 为您的特定任务创建一个 ListAdapterDataSource 子类,它将执行 3 个不同的网络请求。

在它们每个的回调中,您将结果附加到 ListDiffable 数组:

var users: [ListDiffable] = [] {
didSet {
update()
}
}

private func update() {
DispatchQueue.main.async { [weak self] in
self?.adapter.performUpdates(animated: true, completion: { _ in
self?.loading = false
})
}
}

以这种方式调用 performUpdates 可确保 IGListKit 使用其智能差异算法仅更改/添加最近添加的单元格,而不会影响性能。您可以在 func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController 方法的 ListAdapterDataSource 协议(protocol)中为部分/单元格设置不同的类

关于ios - IGListkit 网络责任,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52573472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com