我正在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
数组并根据需要对其进行强制转换来解决此问题,但是使用兼容类型肯定会更干净。
关于我该如何使用更具体的类型的任何想法?
答案 0 :(得分:1)
您可以声明并采用自定义cooperative
视图作为泛型
SelectOptionPopover