Мой код получает переменную с JSON и показывает ее в моем виджете. Но это работает только иногда. Иногда текст не отображается и остается пустым. Какова причина? .onAppear
проблема? Отображает ли он текст и одновременно загружает его из json?
Мой взгляд:
struct MyTeamWidgetEntryView : View {
@ObservedObject var networkManager = NetworkManager()
var entry: Provider.Entry
var body: some View {
Text(NetworkManager.test)
.onAppear {
self.networkManager.fetchData()
}
}
}
Моя обработка JSON:
class NetworkManager: ObservableObject {
@Published var posts = [Post]()
static var test = ""
func fetchData() {
if let url = URL(string: "https://hn.algolia.com/api/v1/search?tags=front_page") {
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) { (data, response, error) in
if error == nil {
let decoder = JSONDecoder()
if let safeData = data {
do {
let decodedFile = try decoder.decode(Results.self, from: safeData)
DispatchQueue.main.async {
self.posts = decodedFile.hits
NetworkManager.test = decodedFile.hits[0].title
}
} catch {
print(error)
}
}
}
}
task.resume()
}
}
}