我正在努力從我從API獲取的資料中提取單個值(字串和Int)。我以串列的形式獲取了資料:
class apiCall {
func getRockets(completion:@escaping ([Rockets]) -> ()) {
guard let url = URL(字串。"https://api.spacexdata.com/v4/rockets") else { return }
URLSession.shared.dataTask(with: url) { (資料,_,_)。在中
let rockets = try! JSONDecoder(). decode([Rockets].self, from: data!)
print(rockets)
DispatchQueue.main.async {
完成(火箭彈)
}
}
.恢復()
}
}
當我嘗試在視圖中使用它時,當使用串列查看值時,我成功了,比如它顯示了來自API資料的名稱串列。但是當我想查看一個單一的值時,就像這樣:
import SwiftUI
struct RocketStatistics: View {
var rockets: [Rockets] = [] 。
var body。some View {
VStack{
Text(rockets[1] .name)
}
.onAppear {
apiCall().getRockets { (rockets) in.
self.rockets = rockets
}
}
}
}
struct RocketStatistics_Previews: PreviewProvider {
static var previews: some View {
RocketStatistics()
}
}
它甚至沒有給我一個錯誤,但我的預覽就是不更新,一直在崩潰。 所以我的問題是,我如何從串列形式的 API 資料中提取單個值并在整個專案中使用這些單個值?
為了保持簡單,并使它首先作業,我開始只是從API中獲取 "名字":
import Foundation
import SwiftUI
struct Rockets: Codable, Identifiable {
let id = UUID()
let name : String()
}
當這一切都成功后,我還想在我的專案中使用來自API的整數值,所以也歡迎大家提供這方面的建議!
uj5u.com熱心網友回復:
在沒有任何檢查的情況下,永遠不要在SwiftUI視圖中通過硬編碼的索引獲得專案。當視圖第一次被渲染時,陣列是空的,任何索引訂閱都會崩潰。
始終檢查陣列是否包含所需數量的專案。在這種情況下,陣列必須至少包含兩個專案
VStack{
Text(rockets.count > 1 ? rockets[1].name : "")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/324721.html
標籤:
