Bonjour tout le monde,
Je rencontre un soucis, j’ai téléchargé un fichier CSV que j’ai importé dans Xcode en SwiftUI depuis data.gouv : https://www.data.gouv.fr/fr/datasets/liste-des-services-de-police-accueillant-du-public-avec-geolocalisation/
J’arrive à récupérer les données en String et me créer des objets avec, sauf la latitude et longitude.
Je n’arrive pas à les transformer en CLDegree ou même seulement en Double.
Du coup je suis pas mal bloqué.
Ma Structure :
struct StationStruct:Identifiable {
var id = UUID()
service:String
let addressGeo:String
let phoneNumber:String
let department:String
let codeCommon:String
let codeZip:String
let common:String
let address:String
let latitude:Double
let longitude:Double
let coordinate:CLLocationCoordinate2D
init(csv: String) {
let fields = csv.components(separatedBy: ";")
guard fields.count == 12 else {return nil}
service = fields[0]
addressGeo = fields[1]
phoneNumber = fields[2]
department = fields[3]
codeCommon = fields[4]
codeZip = fields[6]
common = fields[7]
address = fields[5]
latitude = Double(fields[11]) ?? 100.00
longitude = Double(fields[12]) ?? 100.00
coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}
}
Ma récupération du fichier CSV:
@Published var arrayStation:[StationStruct] = []
@Published var mapLocation: MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 43.124228, longitude: 5.928), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))
init() {
loadCsvPoliceStation(csvName: "police")
}
func loadCsvPoliceStation(csvName: String) -> [StationStruct] {
var csvToStruct = [PoliceStationStruct]()
guard let filePath = Bundle.main.path(forResource: csvName, ofType: "csv") else {return []}
var dataString = ""
do {
dataString = try String(contentsOfFile: filePath)
} catch {
print(error.localizedDescription)
return []
}
var rows = dataString.components(separatedBy: "\n")
let columnsCount = rows.first?.components(separatedBy: ";").count
rows.removeFirst()
for row in rows {
let csvColumns = row.components(separatedBy: ";")
if csvColumns.count == columnsCount {
let pnStruct = StationStruct.init(rawCSV: csvColumns)
print("\(pnStruct.service)\(pnStruct.address) Latitute : \(pnStruct.latitude) Longitute : \(pnStruct.longitude) Coordinate : \(pnStruct.coordinate)")
csvToStruct.append(pnStruct)
}
}
return csvToStruct
Si quelqu’un à une solution à me proposer pour que je puisse utiliser toutes les données je suis preneur