Я разрабатываю экран в SwiftUI и имею следующий код:
...
@EnvironmentObject var externalState: MainStateObject
...
SelectOptionPopover(options: $externalState.depots,
selectedOption: selectedDepot,
prompt: "Depot: ")
...
SelectOptionPopover
- это представление, которое я создал для обработки различных всплывающих окон. Для опций он ожидает массив [SelectOptionPopoverOption]
, который объявлен так:
protocol SelectOptionPopoverOption {
var displayName: String { get }
}
Теперь у меня проблема в том, что когда я передаю массив SelectOptionPopoverOptions
, он работает просто отлично , Но если я передам массив другого типа, который соответствует , в SelectOptionPopoverOptions, преобразование завершится неудачно с чем-то вроде:
'Binding<[Depot]>' is not convertible to 'Binding<[SelectOptionPopoverOption]>'
Это могут быть точно такие же объекты, но работают, когда они идентифицированы как SelectOptionPopoverOption
s, но не когда идентифицированы как Depot
s.
Я могу обойти это, используя массивы SelectedOptionPopoverOption
и приводя их по мере необходимости, но это будет Обязательно будьте чище, чтобы вместо этого можно было использовать соответствующие типы.
Любые идеи о том, как я мог бы использовать более конкретные c типы вместо этого?