Mvvm 将@ObserveObject传递给嵌套视图
我对SwiftUI很陌生,尝试将forEach循环中的数组传递给另一个视图,但Xcode表示,我的“属性类型与其包装类型“ObservedObject”的“wrappedValue”属性不匹配。我在这里也发现了一些类似的问题,但那里的解决方案对我毫无帮助 当我在forEach循环中直接使用对象时,一切都在按需工作。然而,我想要在循环内部实现的视图将非常复杂,因此将其传递给新结构的解决方案将非常好 如果有人能向我解释为什么这个代码不起作用,以及我需要做些什么来修复它,我将非常感激Mvvm 将@ObserveObject传递给嵌套视图,mvvm,swiftui,observedobject,Mvvm,Swiftui,Observedobject,我对SwiftUI很陌生,尝试将forEach循环中的数组传递给另一个视图,但Xcode表示,我的“属性类型与其包装类型“ObservedObject”的“wrappedValue”属性不匹配。我在这里也发现了一些类似的问题,但那里的解决方案对我毫无帮助 当我在forEach循环中直接使用对象时,一切都在按需工作。然而,我想要在循环内部实现的视图将非常复杂,因此将其传递给新结构的解决方案将非常好 如果有人能向我解释为什么这个代码不起作用,以及我需要做些什么来修复它,我将非常感激 import S
import SwiftUI
import Combine
struct Collectable: Identifiable, Decodable {
let id: Int
let name: String
let completion: Int
}
class AlbumViewModel: ObservableObject {
@Published var album: [Collectable] = [
.init(id: 1, name: "Album 1", completion: Int.random(in: 0...100)),
.init(id: 2, name: "Album 2", completion: Int.random(in: 0...100)),
.init(id: 3, name: "Album 3", completion: Int.random(in: 0...100)),
.init(id: 4, name: "Album 4", completion: Int.random(in: 0...100)),
]
}
struct Albums: View {
@ObservedObject var albumsVM = AlbumViewModel()
var body: some View {
VStack(spacing: 10) {
ForEach(albumsVM.album) { collectable in
AlbumCell(myAlbum: collectable)
}
}
}
}
struct AlbumCell: View {
@ObservedObject var myAlbum: Collectable /* ERROR HERE */
var body: some View {
VStack {
Text(myAlbum.name)
}
}
}
我想你想要这样:
struct AlbumCell: View {
var myAlbum: Collectable
var body: some View {
VStack {
Text(myAlbum.name)
}
}
}