我正在按照教程來了解 SwiftUI,特別是在視圖出現時如何呼叫 API。
我看到了這個:
List(results, id: \.trackId) { item in
ListRow(item)
}
.task {
// perform API here
}
但由于我的應用程式以 iOS 14 為目標,我收到此錯誤:
'task(priority:_:)' 僅適用于 iOS 15.0 或更高版本
那么我能做些什么呢?感謝您的幫助
uj5u.com熱心網友回復:
import SwiftUI
struct ContentView: View {
@State var results = [TaskEntry]()
var body: some View {
List(results, id: \.id) { item in
VStack(alignment: .leading) {
Text(item.title)
}
// this one onAppear you can use it
}.onAppear(perform: loadData)
}
func loadData() {
guard let url = URL(string: "https://jsonplaceholder.typicode.com/todos") else {
print("Your API end point is Invalid")
return
}
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
if let response = try? JSONDecoder().decode([TaskEntry].self, from: data) {
DispatchQueue.main.async {
self.results = response
}
return
}
}
}.resume()
}
}
uj5u.com熱心網友回復:
async await適用于 iOS 13 。
https://developer.apple.com/documentation/swift/task
如果您需要使用async呼叫囊腫,請將呼叫包裹在Task
.onAppear(){
Task{
//Your async code here
// await yourFuncHere()
}
}
.onAppear有點不可靠,所以我可能會選擇init一個ObservableObject作為替代方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471647.html
