```
import Foundation
import Combine
final class ModelData: ObservableObject {
// 2. use: @Published
@Published var landmarks: [Landmark] = load("landmarkData.json")
}
```
@EnvironmentObject var modelData: ModelData
```
import SwiftUI
@main
struct LandmarksApp: App {
@StateObject private var modelData = ModelData()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(modelData)
}
}
}
```
```
struct LandmarkList: View {
@EnvironmentObject var modelData: ModelData // 1. This variable
@State private var showFavoritesOnly = false
var filteredLandmarks: [Landmark] {
modelData.landmarks.filter { landmark in // 2. modelData.landmarks
(!showFavoritesOnly || landmark.isFavorite) // logic to filter
}
}
var body: some View {
NavigationStack {
List {
Toggle(isOn: $showFavoritesOnly) {
Text("Favorites only")
}
ForEach(filteredLandmarks) { landmark in
NavigationLink {
LandmarkDetail(landmark: landmark)
} label: {
LandmarkRow(landmark: landmark)
}
}
}
.navigationTitle("Landmarks")
}
}
}
```