swiftui - 如何在 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。有更清洁的方法吗?
解决方案
很难知道什么CarRepository
和CarRepository.ownedCars
是什么,但我猜它们是这样的:
class CarRepositoryType: ObservableObject {
@Published var ownedCars = []
}
var CarRepository = CarRepositoryType()
ownedCars
在更新之前调用接收器。新值被传递到接收器;你应该在那里读。
CarRepository.$ownedCars.sink { owned in
self.ownedCarLength = owned.count
}
推荐阅读
- gitlab - 在 Gitlab Pipeline 页面中显示完整的分支名称
- python - 如何解决 MemoryError:Micropython 的内存分配失败?
- javascript - 使用纯 html 页面响应请求,但不加载我的静态文件
- c# - emgucv:在 C# 中泛卡不正确的倾斜检测
- android - '有比 [5,6) 更新的 com.facebook.android:facebook-android-sdk 版本:4.34.0 '
- google-maps - Google Static Streetview API 与 Google Maps Embed API 中的不同默认视口
- html - 如何防止没有php脚本的网页直接访问?
- python - 如何计算所有文件夹和子文件夹中具有特定扩展名的文件数
- python - Pandas str() 方法返回 nan 值 - 如何保留数值?
- sql-server - 为什么我在查询计划(SQL Server)中使用 Key Lookup 进行排序操作