У меня есть простая структура View, в которой есть массив AnyView
. В body
я пытаюсь перебрать массив с помощью ForEach
.
struct TestView<Content>: View where Content : View
{
var Cells: [AnyView] = []
init<Data: RandomAccessCollection, ID, Item: View>(
@ViewBuilder content: () -> Content)
where Content == ForEach<Data, ID, Item>
{
let Views = content()
Cells = Views.data.map { AnyView(Views.content($0)) }
}
func test(_ i: UInt) -> CGPoint
{
return CGPoint(x: 0.0, y: 0.0)
}
func test() -> CGPoint
{
return CGPoint(x: 0.0, y: 0.0)
}
var body: some View {
ZStack {
ForEach(0..<self.Cells.count, id: \.self) {i in
Text("").position(self.test(i))
}
}
}
}
Однако при компиляции он выдает ошибку в строке ForEach
: «Невозможно определить тип замыкания в текущем контексте». Что вызывает эту ошибку?
Обратите внимание, что у меня есть 2 определения test()
. Если я использую тот без аргумента, ошибка исчезнет. (почему ...?) Кроме того, если я заменю self.Cells.count
на постоянное число (например, "10"), ошибка также исчезнет.
Я использую Xcode 11.1.