Невозможно конвертировать из одной привязки в другую - PullRequest
0 голосов
/ 06 марта 2020

Я разрабатываю экран в 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 типы вместо этого?

1 Ответ

1 голос
/ 06 марта 2020

Вы можете объявить и принять свой пользовательский SelectOptionPopover вид как универсальный

struct SelectOptionPopover<T>: View where T: SelectOptionPopoverOption {
    @Binding var options: [T]
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...