Swift:
Arbeide med CSV

Hvordan:

I Swift er det ingen innebygd støtte for direkte parsing av CSV-filer, men du kan håndtere CSV-data ved å bruke String-metoder for å splitte innholdet, eller ved å dra fordel av tredjepartsbiblioteker som SwiftCSV for en mer strømlinjeformet tilnærming. Her er begge metodene:

Manuel parsing uten eksterne biblioteker

// Vurder en enkel CSV-streng
let csvString = """
navn,alder,by
John Doe,29,New York
Jane Smith,34,Los Angeles
"""

// Splitt CSV-strengen inn i linjer
let rows = csvString.components(separatedBy: "\n")

// Trekk ut nøklene fra den første raden
let keys = rows.first?.components(separatedBy: ",")

// Iterer over radene startende fra den andre
var resultat: [[String: String]] = []
for rad in rows.dropFirst() {
    let verdier = rad.components(separatedBy: ",")
    let dict = Dictionary(uniqueKeysWithValues: zip(keys!, verdier))
    resultat.append(dict)
}

// Eksempel på utskrift
print(resultat)
// Utganger: [{"city": "New York", "age": "29", "name": "John Doe"}, {"city": "Los Angeles", "age": "34", "name": "Jane Smith"}]

Denne tilnærmingen er grei, men mangler robusthet, spesifikt med CSV-filer som inneholder spesialtilfeller som komma i verdier, linjeskift innenfor felt osv.

Ved bruk av SwiftCSV-biblioteket

Først, legg til SwiftCSV i prosjektet ditt ved å inkludere det i Package.swift-avhengighetene dine:

.package(url: "https://github.com/swiftcsv/SwiftCSV.git", from: "0.5.6")

Deretter, importer og bruk det som følger:

import SwiftCSV

// Anta `csvString` er definert som ovenfor

// Opprett et CSV-objekt
if let csv = try? CSV(string: csvString) {
    // Tilgang rader som ordbøker
    let rows = csv.namedRows
    
    // Eksempel på utskrift
    print(rows)
    // Utganger: [{"city": "New York", "age": "29", "name": "John Doe"}, {"city": "Los Angeles", "age": "34", "name": "Jane Smith"}]
}

SwiftCSV forenkler parsing ved automatisk å håndtere nyanser som innkapslede kommaer, linjeskift i felt, og tegnkoding. Husk imidlertid å håndtere mulige feil i virkelige applikasjoner, spesielt når man håndterer eksterne datakilder.