title: Does not conform to String protocol SwiftUI Picker View
body: <p>I have a simple <code>struct</code> that I will build upon. Right now it has one field, an Int. </p>
  
  <pre><code>struct Card: CustomStringConvertible  {
    let value: Int
  
    init(value: Int) {
      self.value = value
    }
  
    var description: String {
      return "\(String(value))"
    }
  }
  </code></pre>
  
  <p>If I do this, I get the Card to print it's value</p>
  
  <pre><code>let c = Card(value: 1)
  print(c)
  </code></pre>
  
  <p>Now if I put an array of Cards in a CardController like this:</p>
  
  <pre><code>class CardController: ObservableObject {
    @Published
    var cards: [Card] = [
      Card(value: 1),
      Card(value: 2),
      Card(value: 3)
    ]
  
  </code></pre>
  
  <pre><code>Picker(selection: $selectedCardValue, label: Text("Choose a card")) {
          ForEach(0..&lt;cardController.cards.count) {
            Text(self.cardController.cards[$0])
          }
        }
        Text("You selected \(selectedCardValue)")
  </code></pre>
  
  <p>I'll get the error <code>Initializer 'init(_:)' requires that 'Card' conform to StringProtocol</code>. I'm not sure why I get this error. If I instead  just change the <code>cards</code> to a type of <code>[String]</code> and values <code>["1", "2", "3"]</code>, the code works fine. </p>
  
  <p>Any idea what's wrong here?</p>