Estoy tratando de convertir dos matrices diferentes de doble en una matriz de MKMapPoint. Tengo una matriz x y una matriz y. Ambos están anidados dentro de otra matriz que contiene otros tipos de datos, como cadenas y booleanos.
Aquí está el modelo:
struct HostModel: Identifiable, Codable { var id: String var fenceX: [Double] var fenceY: [Double] var eventName: String var eventDescription: String var isEventPrivate: Bool private enum CodingKeys: String, CodingKey { case id case fenceX case fenceY case eventName case eventDescription case isEventPrivate } } for data in fenceData { let x = data.fenceX.map({ $0.self }) let y = data.fenceY.map({ $0.self }) print("\(x)") allMapPoints.append(MKMapPoint(x: x, y: y)) }aquí está el tipo de datos $0.self muestra
Creo que este código funcionaría ya que $0.self dice que es un Doble (vea la imagen de arriba), sin embargo, cuando trato de ponerlo en mkmappoint, me da un error que dice "No se puede convertir el valor del tipo '[Doble]' al tipo de argumento esperado 'Doble'"
Y la declaración de impresión muestra esta matriz:
[46476022.57489817, 46475952.06747695, 46475920.9612687, 46475989.39492689, 46476067.16044753, 46476150.11035207, 46476199.88028529, 46476096.19291651]¿Por qué .map no proporciona el tipo de datos que dice que proporciona?
Eso debería ser bastante simple. Lo que realmente necesita es comprimir sus coordenadas x e y y mapear el inicializador MKMapPoint :
let allMapPoints = zip(data.fenceX, data.fenceY).map(MKMapPoint.init)