Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在PreviewProvider中模拟EvironmentObject_Swift_Swiftui - Fatal编程技术网

Swift 在PreviewProvider中模拟EvironmentObject

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 {

我正在使用数据源的EnvironmentObject玩转SwiftUI。我想知道如何在使用PreviewProvider时模拟这一点

示例代码如下:

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