首页 > 解决方案 > 如何在 SwiftUI 中订阅数组的大小?

问题描述

我想跟踪数组的大小,我认为这样的事情会起作用:

class CarListViewModel: ObservableObject {
    private var cancellables = Set<AnyCancellable>()   
    @Published var ownedCarLength = 0

    init(){     

        CarRepository.$ownedCars.sink { _ in
            self.ownedCarLength = CarRepository.ownedCars.count
        }
        .store(in: &cancellables)
    }

因为每次CarRepository.ownedCars修改数组时都会调用它,但是由于某种原因,从 CarRepository.ownedCars.count 返回的值计算为 0。有更清洁的方法吗?

标签: swiftuicombine

解决方案


很难知道什么CarRepositoryCarRepository.ownedCars是什么,但我猜它们是这样的:

class CarRepositoryType: ObservableObject {
    @Published var ownedCars = []
}

var CarRepository = CarRepositoryType()

ownedCars在更新之前调用接收器。新值被传递到接收器;你应该在那里读。

    CarRepository.$ownedCars.sink { owned in
        self.ownedCarLength = owned.count
    }

推荐阅读