How te deal with dynamic array of items and Stores?

Hi guys I'm facing some troubles dealing with stores and arrays with multiple type of items.

Searching through the repo examples I found that with store.IfLet you can deal with optional stores, like in the TicTacToe example. But how can I deal with an array of different items conforming the same protocol?

Some code

struct AppState {
    var items: [RowInterface]
}

struct Item1: RowInterface {}
struct Item2: RowInterface {}

ForEachStore(
   self.store.scope(state:\.items ,
                   action: { in _ fatalError() }),
                  // I want to be able to init one view for Item1 and another for Item2.
                  content: RowView.init(store:)                  
                )

It's not very elegant, but could you have a generic RowView which takes a RowInterface, then in the body of that view, do something like:

if let item1 = rowInterface as? Item1 { // show Item1View }
if let item2 = rowInterface as? Item2 { // show Item2View }

Yes, I tried. But another issue that I'm facing is conform the generic protocol array to Identifiable.

The ForEachStore rise the "only struct/enum/class types can conform..." error. Any clues?

Terms of Service

Privacy Policy

Cookie Policy