привести экземпляры MyModel в соответствие с идентифицируемым протоколом - PullRequest
1 голос
/ 08 февраля 2020

У меня определена MyModel для соответствия протоколу идентификации. Однако, когда я выбираю вариант myModel внутри MyCell, типом является MyModel, а не MyModel: опознаваемый, и сообщение об ошибке, которое я получаю из-за этого, выглядит следующим образом:

Ссылка на инициализатор 'init (_: columns: columnsInLandscape: vSpacing: hSpacing: vPadding: hPadding: content :) 'в' QGrid 'требует, чтобы' MyModel 'соответствовал' Identifiable '

Как мне сделать экземпляр MyModel соответствующим протоколу Identifiable ?

import SwiftUI
import QGrid

class MyModel: Identifiable {
    var id: UUID

    typealias ID = UUID
    let name: String

    init(id: UUID, name: String) {
        self.id = id
        self.name = name
    }
}



struct ContentView: View {

    let array = [MyModel(id: UUID(), name: "Name #1"), MyModel(id: UUID(), name: "Name #2")]

    var body: some View {
        QGrid(array, columns: 3) { //compiler error appears here
            value in
            MyCell(myModel: value)
        }
    }
}


struct MyCell: View {
    let myModel: MyModel //if I change this to MyModel & Identifiable I get the error "Protocol 'Identifiable' can only be used as a generic constraint because it has Self or associated type requirements"

    var body: some View {
        Text("\(myModel.name)")
    }
}
...