Swiftui ForEach方法出现错误`编译器无法在合理时间内对此表达式进行类型检查`

Swiftui ForEach方法出现错误`编译器无法在合理时间内对此表达式进行类型检查`,swiftui,Swiftui,我目前正在使用SwiftUI开发一个应用程序 我有一个错误编译器无法在合理的时间内对这个表达式进行类型检查;尝试将表达式拆分为不同的子表达式 有一些关于相同错误的文章,我试图解决这个问题,但我不能在我的情况下这样做 有人能告诉我怎么解决这个问题吗 代码如下: 已编辑 import SwiftUI struct InfoView: View { @EnvironmentObject var appState: AppState var body: some View {

我目前正在使用SwiftUI开发一个应用程序

我有一个错误
编译器无法在合理的时间内对这个表达式进行类型检查;尝试将表达式拆分为不同的子表达式

有一些关于相同错误的文章,我试图解决这个问题,但我不能在我的情况下这样做

有人能告诉我怎么解决这个问题吗


代码如下:

已编辑

import SwiftUI

struct InfoView: View {

    @EnvironmentObject var appState: AppState

    var body: some View {

    Button(action: {
                appState.makeGetCallInfo()
            }) {
                Text("Hit API")
            }

        ForEach(appState.arrayInfos ?? []){ info in

            VStack{
                Group{
                  Text(String(info.id))
                  Text(String(info.no_1))
                  Text(String(info.no_2))
                  Text(info.name_1)
                  Text(info.name_2 ?? "")
                  Text(info.name_3)
                  Text(info.name_4 ?? "")
                  Text(String(info.no_3 ?? 0))
                  Text(info.name_5 ?? "")
                  Text(String(info.no_4 ?? 0))
                }
                Group{
                  Text(String(info.no_5 ?? 0))
                  Text(info.name_6 ?? "")
                  Text(String(info.no_7))
                  Text(String(info.no_8))
                  Text(info.name_7 ?? "")
                  Text(info.name_8)
                  Text(info.memo ?? "")
                  Text(info.created_at)
                  Text(info.updated_at)
                  Text(String(info.userId))
                }
                  Divider()
                      .padding()
            }
        }
    }
}
如果我像下面那样减少VStack中的子视图数量,它会工作得很好。错误消失了

import SwiftUI
    
struct InfoView: View {

    @EnvironmentObject var appState: AppState

    var body: some View {
        ForEach(appState.arrayInfos ?? []){ info in

            VStack{
                Group{
                  Text(String(info.id))
                  Text(String(info.no_1))
                  Text(String(info.no_2))
                  Text(info.name_1)
                  Text(info.name_2 ?? "")
                  Text(info.name_3)
                  Text(info.name_4 ?? "")
                  Text(String(info.no_3 ?? 0))
                  Text(info.name_5 ?? "")
                  Text(String(info.no_4 ?? 0))
                }
                  Divider()
                      .padding()
            }
        }
    }
}
AppState.swift

import SwiftUI
import Foundation
import Combine


class AppState: ObservableObject {
    
    @Published var arrayInfos:[Infos]?

    func makeGetCallInfo() {
        // Set up the URL request
        let endpoint: String = "https://sample.com/api/info/?user=1"
        
        guard let url = URL(string: endpoint) else {
            print("Error: cannot create URL")
            return
        }
        var urlRequest = URLRequest(url: url)
        urlRequest.addValue("token xxxxxxxxxxxxxxxxxxx", forHTTPHeaderField: "authorization")
        // set up the session
        let config = URLSessionConfiguration.default
        let session = URLSession(configuration: config)
        
        // make the request
        let task = session.dataTask(with: urlRequest) {
            (data, response, error) in
            // check for any errors
            guard error == nil else {
                print("error calling GET")
                print(error!)
                return
            }
            // make sure we got data
            guard let responseData = data else {
                print("Error: did not receive data")
                return
            }
            // parse the result as JSON, since that's what the API provides
            DispatchQueue.main.async {
                
                do{ self.arrayInfos = try JSONDecoder().decode([Infos].self, from: responseData)
                }catch{
                    print("Error: did not decode")
                    return
                }
            }
        }
        task.resume()
    }
JsonModel.swift

import Foundation

struct Infos: Codable,Identifiable {
    var id: Int
    var no_1: Int
    var no_2: Int
    var name_1: String
    var name_2: String?
    var name_3: String
    var name_4: String?
    var no_3: Int?
    var name_5: String?
    var no_4: Int?

    var no_5: Int?
    var name_6: String?
    var no_7: Int
    var no_8: Int
    var name_7: String?
    var name_8: String
    var memo: String?
    var created_at: String
    var updated_at: String
    var userId: Int
}


Xcode:Version12.0.1

您的VStack包含的子视图太多,最多允许10个。因此,将它们按较少的数量分组,如下所示

VStack{
  Group {
    Text(String(info.id))
    Text(String(info.no_1))
    Text(String(info.no_2))
    Text(info.name_1)
    Text(info.name_2 ?? "")
    Text(info.name_3)
    Text(info.name_4 ?? "")
    Text(String(info.no_3 ?? 0))
    Text(info.name_5 ?? "")
    Text(String(info.no_4 ?? 0))
  }
  Group {
    Text(String(info.no_5 ?? 0))
    Text(info.name_6 ?? "")
    Text(String(info.no_7))
    Text(String(info.no_8))
    Text(info.name_7 ?? "")
    Text(info.name_8)
    Text(info.memo ?? "")
    Text(info.created_at)
    Text(info.updated_at)
    Text(String(info.userId))
  }
    Divider()
        .padding()
}

注意:最好将这样大的容器分隔成专用视图,并在此处创建。

将其分解为较小的视图。例如,将每个组设为单独的子视图


将info对象从循环传递到子视图中

我尝试使用
组{}
进行编辑,但仍有相同的错误。请显示什么是AppState和依赖类型?