将 EnvironmentObject 放入不在层次结构中的类

问题描述

我有一个用于从 URL 获取 json 数据的类。我希望能够根据注入到我的应用程序根视图中的 EnvironmentObject 中存储的属性来更改 URL 的路径。显然,该类不被视为根视图的祖先。当我尝试在我的类中引用 EnvironmentObject 时出现此错误

SwiftUI 错误线程 1:致命错误:找不到 globalData 类型的可观察对象。 globalData 的 view.environmentobject(_:) 可能缺少作为此视图的祖先。

public class ImageFetcher: ObservableObject {
    @Published  var noteImages = [NoteImageData]()
    @EnvironmentObject var theBody: globalData

    init() {
        load()
    }

    func load() {
    
        let url = URL(string: "http://start of the path/\(theBody.imagePath)/data.json")!

        URLSession.shared.dataTask(with: url){(data,response,error) in

        do {
            if let d = data {
               //print(String(decoding: d,as: UTF8.self))
                let decodedLists = try JSONDecoder().decode([NoteImageData].self,from: d)
                    dispatchQueue.main.async {
                        self.noteImages = decodedLists
                    }
                }else{
                    print("no data")
                }
            }
            catch {
                print("decoder error")
            }
        }
    .resume()

    }
}

如何根据存储在 EnvironmentObject 中的属性将稍微不同的路径传递给该类?我曾尝试将参数传递给该类,但通常会抱怨该类尚未实例化。谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...