Абстрактное представление SwiftUI для массива различных типов объектов - PullRequest
0 голосов
/ 10 июля 2020

Я хочу составить список из двух типов объектов (MotorBikeRow и WithFootBikeRow будут двумя немного разными представлениями строк в этом списке)

Я исхожу из Java и, естественно, я создам абстрактный класс под названием Bike. Таким образом, у меня есть список из двух (или, конечно, более) типов объектов:

@Binding var bikeList:[Bike]

Но проблема в том, как сделать этот «абстрактный класс» в Swift? В настоящее время я использую протокол под названием Bike, которому соответствуют две структуры MotorBike и WithFootBike.

List {
    ForEach(...) i in {
         if bikeList[i] is MotorBike {
              MotorBikeRow(motorBike: $bikeList[i]) << error
         } else {
              WithFootBikeRow(withFootBike: $bikeList[i]) << error
         }
    }
}

Но мы сразу же видим проблему, если эти два представления запрашивают привязку. 1011 * Так вопрос

  1. Как закинуть привязку с Bike на MorotBike / WithFootBike? Конечно, я использовал этот «трюк»: Как я могу использовать @Binding в Swift , но есть утечки памяти!

  2. Это правильный SwiftUI / Swift подходить? Может быть, я совершенно ошибаюсь и слишком сильно под влиянием «Java», что не вижу более элегантного решения?

...