CSV.swift用 Swift 編寫的 CSV 讀寫庫
CSV.swift 是用 Swift 編寫的 CSV 讀寫庫。
讀取 CSV 的用法
從字符串
import CSV let csvString = "1,foo\n2,bar" let csv = try! CSVReader(string: csvString) while let row = csv.next() { print("\(row)") } // => ["1", "foo"] // => ["2", "bar"]
從文件
注意:默認(rèn)字符編碼是UTF8.
import Foundation import CSV let stream = InputStream(fileAtPath: "/path/to/file.csv")! let csv = try! CSVReader(stream: stream) while let row = csv.next() { print("\(row)") }
獲取 Header 行
import CSV let csvString = "id,name\n1,foo\n2,bar" let csv = try! CSVReader(string: csvString, hasHeaderRow: true) // It must be true. let headerRow = csv.headerRow! print("\(headerRow)") // => ["id", "name"] while let row = csv.next() { print("\(row)") } // => ["1", "foo"] // => ["2", "bar"]
使用下標(biāo)獲取字段值
import CSV let csvString = "id,name\n1,foo" let csv = try! CSVReader(string: csvString, hasHeaderRow: true) // It must be true. while csv.next() != nil { print("\(csv["id"]!)") // => "1" print("\(csv["name"]!)") // => "foo" }
提供字符編碼
如果使用文件路徑,則可以向初始化程序提供字符編碼。
import Foundation import CSV let stream = InputStream(fileAtPath: "/path/to/file.csv")! let csv = try! CSVReader(stream: stream, codecType: UTF16.self, endian: .big)
將一行讀入 Decodable 對象
如果你有一個(gè)符合Decodable協(xié)議的目標(biāo)對象,那就可以使用該對象的新實(shí)例序列化一行。
struct DecodableExample: Decodable { let intKey: Int let stringKey: String let optionalStringKey: String? } let csv = """ intKey,stringKey,optionalStringKey 1234,abcd, """ var records = [DecodableExample]() do { let reader = try CSVReader(string: csv, hasHeaderRow: true) let decoder = CSVRowDecoder() while reader.next() != nil { let row = try decoder.decode(DecodableExample.self, from: reader) records.append(row) } } catch { // Invalid row format }
寫入 CSV 的用法
寫入內(nèi)存并獲取 CSV 字符串
注意:默認(rèn)字符編碼是UTF8.
import Foundation import CSV let csv = try! CSVWriter(stream: .toMemory()) // Write a row try! csv.write(row: ["id", "name"]) // Write fields separately csv.beginNewRow() try! csv.write(field: "1") try! csv.write(field: "foo") csv.beginNewRow() try! csv.write(field: "2") try! csv.write(field: "bar") csv.stream.close() // Get a String let csvData = csv.stream.property(forKey: .dataWrittenToMemoryStreamKey) as! Data let csvString = String(data: csvData, encoding: .utf8)! print(csvString) // => "id,name\n1,foo\n2,bar"
寫入文件
注意:默認(rèn)字符編碼是UTF8.
import Foundation import CSV let stream = OutputStream(toFileAtPath: "/path/to/file.csv", append: false)! let csv = try! CSVWriter(stream: stream) try! csv.write(row: ["id", "name"]) try! csv.write(row: ["1", "foo"]) try! csv.write(row: ["1", "bar"]) csv.stream.close()
安裝
CocoaPods
pod 'CSV.swift' , '~> 2.4.3'
Carthage
github "yaslab/CSV.swift" ~> 2.4.3
Swift 包管理器
.package(url: "https://github.com/yaslab/CSV.swift.git", .upToNextMinor(from: "2.4.3"))
評論
圖片
表情
