我已经阅读了许多关于这个错误的问题,大多与解散表格有关,但没有一个涉及SwiftUI的Map。下面的代码生成了这个错误。视图模型中没有更新任何内容,我只是将一个绑定传递给Map初始化器中的region。对于region使用本地状态变量可以正常工作而没有错误。我正在运行Xcode 14.0。如果我删除@Published属性包装器,则错误消失。所以我不确定视图模型应该如何通知视图区域已经发生了更改,可能是由于位置更新。
import SwiftUI
import MapKit
class MM : ObservableObject {
@Published var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))
}
struct SimpleMap: View {
@ObservedObject var mm = MM()
@State private var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))
var body: some View {
//Error
Map(coordinateRegion: $mm.region)
//No Error
//Map(coordinateRegion: $region)
}
}
StateObject
替代ObservedObject
。 - undefinedObservableObject
object initialised with@StateObject
and when you pass it to other views, in those views you need to declare it with@ObservedObject
- undefined@StateObject
一点也不改变事情。从iOS16和Swift 4开始,具有Published属性的ObservableObjects不允许进行引用绑定。您需要使用一个@State
属性,而且永远不要手动操作它。 - undefined