我正在寻找创建一个可以由视图模型(不仅仅是视图)访问的 EnvironmentObject。
Environment 对象跟踪应用程序会话数据,例如登录、访问令牌等,这些数据将被传递到视图模型(或需要时的服务类)以允许调用 API 以从该 EnvironmentObjects 传递数据。
我试图将会话对象从视图传递给视图模型类的初始化程序,但出现错误。
如何使用 SwiftUI 访问/传递 EnvironmentObject 到视图模型中?
我试图弄清楚如何使用 MVVM 设计模式和 SwiftUI 来实现以下目标。
\n我只想拥有网络操作队列的 1 个实例(使用OperationQueue),其中任何视图模型都需要发送任何网络请求,但我听说创建单例不是首选,我应该将网络队列对象传递到它所在的位置需要。
因此,如果我在场景委托中创建网络操作队列的实例,并将它们传递到 ContentView 初始化程序中,并将其存储在那里的对象中,然后传递到随后创建的视图中。
\n这似乎不是一个好的 MVVM 设计实践,因为根据我的理解,视图应该只拥有 ViewModel?
\n实现这一目标的最佳方法是什么?
\n编辑:对此进行更多思考,我可以通过其构造函数将其传递到视图中,然后在构造函数中我可以创建视图模型并直接传递它,以便视图不拥有任何东西。
\n但我仍然需要一个单例,那么如何将单例作为依赖注入传递而不是全局使用它呢?
\n如果我将图像视图添加到Xcode中的界面构建器中并且它的大小为200 x 100(Xcode中的大小),我如何知道使图像资产的大小为1x 2x和3x.
如果我在3x的photoshop中将其设为600x300像素,然后尝试使用此图像,它在iPhone 7 plus上看起来不太清晰,那么我如何知道图像资源对于给定图像视图大小应该是什么分辨率