我是iOS新手,现在正在尝试在swiftui视图中实现我自己的init方法。Init 有一个参数,必须为两个状态赋值。但是,无论我做什么,它都不能正确填充它们。我使用MapKit和CLLocationCoordinate2D进行地理定位。 补充一点,坐标:初始化中的 CLLocationCoordinate2D 具有正确的值,但状态没有。 我在这里实现的视图是ModalView 知道该怎么办吗?这是我的代码。
@State var coordinate = CLLocationCoordinate2D()
@State private var name: String = ""
@State private var price: Decimal = 0
@State private var priceStr: String = ""
@State private var showAlert = false
@State private var location = ParkPlaceRespons(id: -1, name: "", price: -0, longitude: 18.42645, latitude: 43.85623)
@State private var mapArray = [ParkPlaceRespons]()
var alert: Alert{
Alert(title: Text("Error"), message: Text("Your price input is not in right format"), dismissButton: .default(Text("Ok")))}
init(coordinates: CLLocationCoordinate2D){
print(coordinates) // CLLocationCoordinate2D(latitude: 43.85613, longitude: 18.42745)
self.coordinate = coordinates
print(self.coordinate) // CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0)
self.coordinate.latitude = coordinates.latitude
self.coordinate.longitude = coordinates.longitude
self.location.longitude = coordinates.longitude
self.location.latitude = coordinates.latitude
print(location) // Does not work as well
self.mapArray.append(location)
print(mapArray) // Empty array
}
当您查看有关@State
的文档时,您会发现以下片段:
仅从视图主体内部(或从 它调用的函数(。因此,您应该声明您的 将属性状态为私有,以防止视图的客户端 访问它。
因此,您不应该在初始值设定项中设置坐标、位置或 mapArray,如果您发现有必要在初始值设定项中设置变量,您应该将它们声明为@Binding
或@ObservedObject
。