SwiftUI 中的 ForEach 问题

Ash*_*lls 6 swiftui

我正在尝试从一组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])
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但以下不会编译...

struct RequestsView : View {

    let requests: [Request]

    var body: some View {
        List {
            ForEach(requests) { request in
                RequestRow(request: request)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Cannot convert value of type '(Request) -> RequestRow' to expected argument type '(_) -> _'

关于问题可能是什么的任何想法?

Ash*_*lls 14

好的,我很快就找到了答案。根据 Apple 的文档,数组元素必须是Identifiable,所以这有效......

var body: some View {
    List {
        ForEach(requests.identified(by: \.self)) { request in
            RequestRow(request: request)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信我不会是最后一个遇到这个问题的人,所以我会把它留在这里以供将来参考。

  • Upvoted,但我已经通过这个链接解决了这个问题,这也可以帮助其他人 - https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-views-in-a-loop-using- foreach 这是一个很好的资源,尽管 SwiftUI 是 Beta 1!希望这个索引可以帮助你解决其他问题 - https://www.hackingwithswift.com/quick-start/swiftui (2认同)