我正在尝试根据Request
对象的数组创建列表。
我已经定义了一个自定义视图RequestRow
以显示一个Request
。
以下内容可显示请求列表...
struct RequestsView : View {
let requests: [Request]
var body: some View {
List {
ForEach(0..<requests.count) { i in
RequestRow(request: self.requests[i])
}
}
}
}
但以下内容无法编译…
struct RequestsView : View {
let requests: [Request]
var body: some View {
List {
ForEach(requests) { request in
RequestRow(request: request)
}
}
}
}
Cannot convert value of type '(Request) -> RequestRow' to expected argument type '(_) -> _'
对可能是什么问题有任何想法吗?
答案 0 :(得分:4)
好的,我很快想出了答案。根据Apple的文档,数组元素必须为Identifiable
,因此可以正常工作……
var body: some View {
List {
ForEach(requests.identified(by: \.self)) { request in
RequestRow(request: request)
}
}
}
我确定我不会是遇到此问题的最后一个人,所以我将其留在此处以供将来参考。
答案 1 :(得分:0)
我遇到了同样的问题,但是在我的情况下,Component
是一个协议,因此它不能符合可识别的
VStack {
ForEach(components.identified(by: \.uuid)) { value -> UIFactory in
UIFactory(component: value)
}
}
但是,如果我尝试这种方法,它会很好
VStack {
ForEach(components.identified(by: \.uuid)) { value -> UIFactory in
Text(value.uuid)
}
}