<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CSV.swift用 Swift 編寫的 CSV 讀寫庫

          聯(lián)合創(chuàng)作 · 2023-10-02 04:28

          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"))
          

           

           

          瀏覽 11
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  18禁网站禁片免费看 | 亚洲AV电影免费在线观看 | 狠狠操免费视频 | 亚洲色五月天 | 91爱爱高清|