如何在 SwiftUI 中订阅数组的大小?

Posted

技术标签:

【中文标题】如何在 SwiftUI 中订阅数组的大小?【英文标题】:How can I subscribe to the size of an array in SwiftUI? 【发布时间】:2021-07-11 15:39:25 【问题描述】:

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

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。有没有更清洁的方法?

【问题讨论】:

【参考方案1】:

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

class CarRepositoryType: ObservableObject 
    @Published var ownedCars = []


var CarRepository = CarRepositoryType()

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

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

【讨论】:

感谢您的快速回复,成功了!

以上是关于如何在 SwiftUI 中订阅数组的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中订阅多个发布者

如何在 SwiftUI 中增加按钮的大小? (多平台项目)

如何在swiftui中使用选择器更改文本大小

如何在 SwiftUI 中更改 UIViewRepresentable 内的 UITextField 大小

如何在 SwiftUI 中圆角并减小列表的大小?

如何检查 SwiftUI 何时订阅了 ObservableObject 的已发布属性?