Same code muitiple times throws "The compiler is unable to type-check this expression in reasonable time" SwiftUI

Viewed 18

In same struct, both of the below runs fine when used individually :

   HStack{
          ForEach(nam.sampleType.indices){sat in
         
          ForEach(picture.indices){pic in
           
           if(picture[pic].id == nam.sampleType[sat].testSampleTypeId){
        
                HStack{
                       ImageLoader(urlString: picture[pic].fileName)
                       .frame(maxWidth:.infinity, alignment: .leading)
                       .fixedSize(horizontal: false, vertical: true)
                       }
                    }
                 }}
             }.padding(.leading,24)
              .padding(.bottom,6)

this too

     HStack{
               Text("Sample Type")
               .font(.system(size: 12))
               .foregroundColor(.red)

                Divider()
               .padding(.leading,18)
               
       ForEach(nam.sampleType.indices){sam in
   
       Text("\(sam+1). " + "\(nam.sampleType[sam].sampleName)")
      
       .font(.system(size:10))
       .foregroundColor(.blue)

      ForEach(picture.indices){pac in

          if(picture[pac].id == nam.sampleType[sam].testSampleTypeId){
             
             ImageLoader(urlString: picture[pac].fileName)
             .frame(maxWidth:.infinity, alignment: .leading)
             .fixedSize(horizontal: false, vertical: true)
              }
          }}
      }

But when used together as below :

 struct : Menu View {
 @State var response : [DetailResponse]
 @State var picture : [LinkResponse]
 var body: some View{
 ScrollView(.vertical){

 ForEach(response){nam in
  
    VStack{
               Text("Sample Type")
               .font(.system(size: 12))
               .foregroundColor(.red)

                Divider()
               .padding(.leading,18)
               
       ForEach(nam.sampleType.indices){sam in
   
       Text("\(sam+1). " + "\(nam.sampleType[sam].sampleName)")
      
       .font(.system(size:10))
       .foregroundColor(.blue)
      }}


 HStack{
         ForEach(nam.sampleType.indices){sat in
         
          ForEach(picture.indices){pic in
           
           if(picture[pic].id == nam.sampleType[sat].testSampleTypeId){
        
                HStack{
                       ImageLoader(urlString: picture[pic].fileName)
                       .frame(maxWidth:.infinity, alignment: .leading)
                       .fixedSize(horizontal: false, vertical: true)
                       }
                    }
                 }}
             }.padding(.leading,24)
              .padding(.bottom,6)
        }}
 

The compiler throws "The compiler is unable to type-check this expression in reasonable time.." error.

Below is the model

struct PriceDetailResponse:Codable{

let success:Bool
let message:String
let response:[DetailResponse]

enum CodingKeys: String, CodingKey{
    
    case success = "IsSuccess"
    case message = "Message"
    case response = "ResponseData"
}}

struct DetailResponse:Codable, Identifiable{
var id: Int{testId}
let testId:Int
let testMainName:String
let testPackage:[TestListPackage]
let sampleType:[SampleList]

enum CodingKeys: String, CodingKey{
    
    case testId = "TestId"
    case testMainName = "TestName"
    case testPackage = "TestListForPackage"
    case sampleType = "SampleTypeList"
}}

struct SampleList:Codable, Identifiable{
var id:Int{packageId}
let testSampleTypeId : Int
let sampleName : String
let packageId : Int

enum CodingKeys: String, CodingKey{
    
    case testSampleTypeId = "TestSampleTypeId"
    case sampleName = "SampleName"
    case packageName = "PackageName"
    case packageId = "PackageId"
   }

struct SampleImageLink:Codable{
let success:Bool
let message:String
let linkResponse:[LinkResponse]

enum CodingKeys: String, CodingKey{
    
    case success = "IsSuccess"
    case message = "Message"
    case linkResponse = "ResponseData"
}}


struct LinkResponse:Codable,Identifiable{

var id:Int  
let fileName:String

enum CodingKeys: String, CodingKey{
    
    case id = "Id"
    case fileName = "FileName"
}}

why this is happening...requirement is all sample Names than Image not sample Name Image together which is happening if used together in a single stack

0 Answers
Related