Swift 在PreviewProvider中模拟EvironmentObject
我正在使用数据源的EnvironmentObject玩转SwiftUI。我想知道如何在使用PreviewProvider时模拟这一点 示例代码如下:Swift 在PreviewProvider中模拟EvironmentObject,swift,swiftui,Swift,Swiftui,我正在使用数据源的EnvironmentObject玩转SwiftUI。我想知道如何在使用PreviewProvider时模拟这一点 示例代码如下: struct ListView: View { @State private var query: String = "Swift" @EnvironmentObject var listData: ListData var body: some View { NavigationView {
struct ListView: View {
@State private var query: String = "Swift"
@EnvironmentObject var listData: ListData
var body: some View {
NavigationView {
List(listData.items) { item in
ListItemCell(item: item)
}
}.onAppear(perform: fetch)
}
private func fetch() {
listData.fetch()
}
}
struct ListView_Previews: PreviewProvider {
static var previews: some View {
How do I mock this?
// ListView(listData: EnvironmentObject<ListData>)
}
}
class ListData: BindableObject {
var items: [ListItem] = [] {
didSet {
didChange.send(self)
}
}
var didChange = PassthroughSubject<ListData, Never>()
func fetch() {
// async call that updates my items
self?.items = someNetworkResponse
}
}
结构列表视图:视图{
@国家私有var查询:String=“Swift”
@环境对象变量listData:listData
var body:一些观点{
导航视图{
列表(listData.items){item in
ListItemCell(项:项)
}
}.onAppear(执行:获取)
}
私有func fetch(){
listData.fetch()
}
}
结构ListView\u预览:PreviewProvider{
静态var预览:一些视图{
我怎么嘲笑这个?
//ListView(listData:EnvironmentObject)
}
}
类ListData:BindableObject{
变量项:[ListItem]=[]{
迪塞特{
发送(自我)
}
}
var didChange=PassthroughSubject()
func fetch(){
//更新我的项目的异步调用
self?.items=someNetworkResponse
}
}
这在我的ListData类中运行良好:
#if DEBUG
let mockedListView = ListView().environmentObject(ListData())
#endif