arrays - 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
which 返回一个可选的
Text(sumato.first?.suma_ars ?? "Start")
或进行检查
Text(sumato.isEmpty ? "Start" : sumato[0].suma_ars)
推荐阅读
- sql - 在 SQL Server 动态数据透视中分配默认值
- mysql - 为什么 mysql-client 不能通过 docker-forwarded tcp 端口连接到 GCP cloud_sql_proxy?
- r - 设置条件 group_by
- validation - 在不是 TextFormField 的颤动中验证属性的值
- c++ - C++ PlaySound() 给出错误
- function - kotlin 返回布尔函数
- javascript - 如何选择退出 Next.js 的自动预呈现?
- php - 在 formbuilder 的 'help' 参数中添加 html
- matlab - 无法在 MATLAB 中解析名称(函数名称)
- vue.js - 将变量分配给模板中的断点