表达诊断失败



我是SwiftUI的新手,我试图实现一个视图列表,我得到了这个(我猜)语法错误,找不到它,也许有人可以解释?

我有一个场地模型:

struct Venue: Codable {
let venueId: String
let name: String
let location: Location
let categories: [VenueCategory]?
private enum CodingKeys: String, CodingKey {
case venueId = "id"
case name
case location
case categories
}
}

然后是自定义视图,我想列出:

struct VenueItemView: View {
@Binding var venue : Venue

var body: some View {
Text("(venue.name)")
}
}

ViewModel, where i store场馆:

import Foundation
import FoursquareAPIClient
class FeedViewModel: ObservableObject {
@Published var venues: [Venue] = FoursquareManager.sharedManager().venues
}

和主视图,我在哪里得到这个错误:

import SwiftUI
struct FeedView: View {
@StateObject private var viewModel = FeedViewModel()

var body: some View { // Failed to produce diagnostic for expression
Text("Hello")
List(viewModel.venues) { v in
VenueItemView(venue: binding(for: v))
}
}

private func binding(for venue: Venue) -> Binding<Venue> {
guard let scrumIndex = viewModel.venues.firstIndex(where: { $0.venueId == venue.venueId }) else {
fatalError("Can't find scrum in array")
}
return $viewModel.venues[scrumIndex]
}
}

确认您对Identifiable的看法:

struct Venue: Codable, Identifiable {
var id: String {
venueId
}
let venueId: String
...
}

或者直接在ForEach中指定id:

ForEach(items, id: .venueId) {

最新更新