我正在寻找一种方法,在SwiftUI中加载View之前初始化一个类。 这个类需要两个参数,分别是 self
的初始化器和一个 Int
的值,然后当初始化时,我想在Class里面调用get方法,得到facebook视频的数组(加载在WebKit中)来显示。 然后,当初始化时,我想在Class里面调用get方法,得到一个数组的facebook视频(在WebKit中加载)来显示。 我遇到的问题是,如果我过早地调用get方法,它就会崩溃,然后它不会让我创建一个调用View的self类型的varlet。 在我看来,我似乎需要某种完成处理程序,但我不知道该怎么做。
下面是我的一部分 fetchDataBook
类的初始化,以便从我有权限的Facebook页面获取信息,以及在View加载以下值之前需要初始化的内容 getWebView()
.
private let upperBoundRange: Int
private var requests = [URLRequest]()
private var WebViews = [WebView2]()
init(upperBoundRange: Int) {
self.upperBoundRange = upperBoundRange
getToken()
}
//
//
// Create some sort of completsion handler to tell when it is safe to fetch webviews
//
//
func getwebView(index: Int) -> WebView2 {
print("Get views", WebViews[index])
return WebViews[index]
}
private func setWebViews() {
for i in 0...upperBoundRange {
WebViews.append(WebView2(parent: parent, request: requests[i]))
}
}
private func setLinks(data: NSArray) {
// Code Not Shown to get links for setWebViews()
}
// Fetches FaceBook URL for Livestream
private func getJSON(token: String) {
// code not shown
}
private func getToken() {
// code now shown
}
这是我的SwiftUI视图的基本struture。
struct LiveMaster : View {
let fb = fetchDataBook(upperBoundRange 4)
ScrollView{
VStack {
self.fb.getwebView(index: 0)
// Each displays WebSite from fetch in fetchDataBook class but cannot display them until the var in fetchDataBook has the values
}
VStack {
}
VStack {
}
VStack {
}
}
谢谢你,如果你需要更多的信息,我很乐意编辑这个来澄清。 这个问题在过去的几天里,我一直找不到解决的办法,也没有一个简单的方法去问。 谢谢你。
我的问题的答案就像Paulw11说的那样。你的模型应该@发布一个可选的。 这工作完美,只要我添加一个Bool值,一旦设置了值就会改变,因为它没有正确更新我的WebView2的数组。 然后,我只要在我的那个类的实例上使用@ObservedObject,就可以完美地使用该Bool值的if检查。 谢谢@Paulw11的建议。