无法从一种绑定转换为另一种绑定

时间:2020-03-06 18:53:42

标签: swiftui

我正在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时起作用,而在被标识为Depot时却不能起作用。

我可以通过使用SelectedOptionPopoverOption数组并根据需要对其进行强制转换来解决此问题,但是使用兼容类型肯定会更干净。

关于我该如何使用更具体的类型的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以声明并采用自定义cooperative视图作为泛型

SelectOptionPopover