Swift:
CSV와 함께 작업하기

방법:

Swift에서는 CSV 파일을 직접 파싱하기 위한 네이티브 지원이 없지만, String 메소드를 사용하여 내용을 분할하거나 SwiftCSV와 같은 타사 라이브러리를 활용하여 더 간편한 방식으로 CSV 데이터를 처리할 수 있습니다. 다음은 두 가지 방법입니다:

외부 라이브러리 없는 수동 파싱

// 간단한 CSV 문자열을 고려해보세요
let csvString = """
name,age,city
John Doe,29,New York
Jane Smith,34,Los Angeles
"""

// CSV 문자열을 줄로 분할
let rows = csvString.components(separatedBy: "\n")

// 첫 번째 줄에서 키 추출
let keys = rows.first?.components(separatedBy: ",")

// 두 번째 줄부터 시작하여 줄들을 반복 처리
var result: [[String: String]] = []
for row in rows.dropFirst() {
    let values = row.components(separatedBy: ",")
    let dict = Dictionary(uniqueKeysWithValues: zip(keys!, values))
    result.append(dict)
}

// 샘플 출력
print(result)
// 출력: [{"city": "New York", "age": "29", "name": "John Doe"}, {"city": "Los Angeles", "age": "34", "name": "Jane Smith"}]

이 접근법은 직관적이지만 특히 값 내의 콤마, 필드 내의 줄바꿈 등과 같은 특수한 경우를 포함하는 CSV 파일에는 견고성이 부족합니다.

SwiftCSV 라이브러리 사용

먼저, Package.swift 종속성에 SwiftCSV를 포함하여 프로젝트에 추가하십시오:

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

그런 다음 다음과 같이 가져오고 사용하세요:

import SwiftCSV

// `csvString`이 위와 같이 정의되었다고 가정

// CSV 객체 생성
if let csv = try? CSV(string: csvString) {
    // 사전으로 행 접근
    let rows = csv.namedRows
    
    // 샘플 출력
    print(rows)
    // 출력: [{"city": "New York", "age": "29", "name": "John Doe"}, {"city": "Los Angeles", "age": "34", "name": "Jane Smith"}]
}

SwiftCSV는 캡슐화된 콤마, 필드 내의 줄바꿈, 문자 인코딩과 같은 뉘앙스를 자동으로 처리하여 파싱을 단순화합니다. 그러나 외부 데이터 소스를 다룰 때 발생할 수 있는 가능한 오류, 특히 실세계 애플리케이션에서 오류 처리를 잊지 마십시오.