SWIFT:索引超出显示文本的范围,但在打印时工作正常



我有这个问题。当我想在控制台上打印数组的值时,这是可以的。但当我想以与Text((相同的方式打印数组的相同值时,表示索引超出范围

这是我的代码的一部分

struct VerCajaView: View {
class X1: Codable, Identifiable {
var operacion: String? = ""
var fecha: String? = ""
}
class X2: Codable, Identifiable {
var suma_ars: String? = ""

}
class Respuesta: Codable, Identifiable  {
var movimientos: [X1] = []
var Sumas : [X2] = []
}
@State var models: [X1] = []
@State var sumato: [X2] = []

var body: some View {

Button(action: {
print(sumato[0].suma_ars)
}){
Text(sumato[0].suma_ars ?? "Start")
}

我还检索了类似的json响应

var urlRequest: URLRequest = URLRequest(url: url)
urlRequest.httpMethod = "GET"
URLSession.shared.dataTask(with: urlRequest, completionHandler: { (data, response, error) in


guard let data = data else {
print("invalid response")
return
}


do {

let resultado = try JSONDecoder().decode(Respuesta.self, from: data)
self.models = resultado.movimientos
self.sumato = resultado.Sumas

我的json响应是

{"movimientos":[{"id":"26","operacion":"Compra","fecha":"21/07/13"},{"id":"27","operacion":"Venta","fecha":"21/07/13"},{"id":"28","operacion":"Retiro","fecha":"21/07/13"}],"Sumas":[{"suma_ars":"-900"}]}

在SwiftUI中,视图经常被渲染。

数组第一次为空并且发生崩溃时。

永远不要从视图渲染区域中具有索引下标的数组中获取项目

使用返回可选的first

Text(sumato.first?.suma_ars ?? "Start")

或执行检查

Text(sumato.isEmpty ? "Start" : sumato[0].suma_ars)

最新更新