-1

I'm stuck when trying to use a variable to define a LocalizedStringKey. For example, in the simplified code below, Option 1 returns the translated value from my localizable.strings file but I'm trying to get Option 2 to work. The returned error is "The compiler is unable to type-check this expression in reasonable time....".

var body: some View {
        ForEach(Array(stride(from: 0, to: 2, by: 1)), id: \.self) { index_v in
            let sPartList: [String] = ["ST", "MT", "LT"]
            let test: LocalizedStringKey = "ST"  // Option 1 works
            // let test: LocalizedStringKey = sPartList[0]  //Option 2 doesnt work
            
            HStack(alignment: .top) {
                Text("Hello")
                Text(test)
              }
         }
}```

DHHJ
  • 103
  • 1
  • 12

1 Answers1

-1

First of all consider that from: 0, to: 2 returns the numbers 0 and 1, if you want 0, 1 and 2 you have to use through

To make the second option work just create an LocalizedStringKey explicitly and use the index variable rather than a fixed literal.

ForEach(Array(stride(from: 0, through: 2, by: 1)), id: \.self) { index in
   let test = LocalizedStringKey(sPartList[index])
   ...

Annotate types only if the compiler cannot infer them.

vadian
  • 274,689
  • 30
  • 353
  • 361