Swift:
Työskentely CSV:n kanssa
Kuinka:
Swiftissä ei ole natiivia tukea CSV-tiedostojen suoraan jäsentämiseen, mutta voit käsitellä CSV-dataa käyttämällä String
-metodeja sisällön jakamiseen, tai hyödyntämällä kolmansien osapuolien kirjastoja, kuten SwiftCSV, saadaksesi sujuvamman lähestymistavan. Tässä ovat molemmat menetelmät:
Manuaalinen jäsentäminen ilman ulkoisia kirjastoja
// Harkitse yksinkertaista CSV-merkkijonoa
let csvString = """
name,age,city
John Doe,29,New York
Jane Smith,34,Los Angeles
"""
// Jaetaan CSV-merkkijono riveihin
let rows = csvString.components(separatedBy: "\n")
// Otetaan avaimet ensimmäiseltä riviltä
let keys = rows.first?.components(separatedBy: ",")
// Iteroidaan rivien yli alkaen toisesta
var result: [[String: String]] = []
for row in rows.dropFirst() {
let values = row.components(separatedBy: ",")
let dict = Dictionary(uniqueKeysWithValues: zip(keys!, values))
result.append(dict)
}
// Näyte tulos
print(result)
// Tuloste: [{"city": "New York", "age": "29", "name": "John Doe"}, {"city": "Los Angeles", "age": "34", "name": "Jane Smith"}]
Tämä lähestymistapa on suoraviivainen, mutta puuttuu robustiutta, erityisesti CSV-tiedostojen kanssa, jotka sisältävät erikoistapauksia kuten pilkkuja arvoissa, rivinvaihtoja kentissä jne.
Käyttäen SwiftCSV-kirjastoa
Lisää ensin SwiftCSV projektiisi sisällyttämällä se Package.swift
-riippuvuuksiisi:
.package(url: "https://github.com/swiftcsv/SwiftCSV.git", from: "0.5.6")
Sen jälkeen, tuo ja käytä sitä seuraavasti:
import SwiftCSV
// Oletetaan, että `csvString` on määritelty yllä
// Luo CSV-objekti
if let csv = try? CSV(string: csvString) {
// Pääsy rivit sanakirjoina
let rows = csv.namedRows
// Näyte tulos
print(rows)
// Tuloste: [{"city": "New York", "age": "29", "name": "John Doe"}, {"city": "Los Angeles", "age": "34", "name": "Jane Smith"}]
}
SwiftCSV yksinkertaistaa jäsentämistä automaattisesti käsittelemällä vivahteita kuten kapseloidut pilkut, rivinvaihdot kentissä ja merkistökoodauksen. Muista kuitenkin käsitellä mahdollisia virheitä todellisissa sovelluksissa, erityisesti kun käsitellään ulkoisia datalähteitä.