Swift (iOS/macOS) में CSV के साथ कार्य — लाइब्रेरीज़ और कोड उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift (iOS/macOS) में CSV के साथ कार्य: लाइब्रेरीज़, पार्सिंग और उदाहरण



CSV (Comma-Separated Values) — सारणीबद्ध डेटा के आदान-प्रदान के लिए सबसे सामान्य प्रारूपों में से एक है। Apple पारिस्थितिकी तंत्र (iOS, macOS, watchOS) में, डेटा आयात/निर्यात, कॉन्फ़िगरेशन लोड करने या लॉग प्रोसेस करने के लिए अक्सर CSV के साथ कार्य की आवश्यकता होती है। इस लेख में, हम Swift में CSV के साथ कार्य करने के मुख्य दृष्टिकोणों पर विचार करेंगे: मैन्युअल पार्सिंग, लोकप्रिय लाइब्रेरीज़ (SwiftCSV और CodableCSV) और स्पष्टीकरण के साथ कोड उदाहरण।



1. CSV के लिए लाइब्रेरीज़ का उपयोग क्यों करें?



मानक Foundation लाइब्रेरी CSV के साथ कार्य करने के लिए तैयार साधन प्रदान नहीं करती है। मैन्युअल पार्सिंग (अल्पविराम से विभाजन, उद्धरण चिह्नों को संभालना, वर्णों को एस्केप करना) जल्दी ही बोझिल और त्रुटि-प्रवण हो जाती है। लाइब्रेरीज़ निम्नलिखित कार्यों को हल करती हैं:

  • उद्धरण चिह्नों और एस्केप किए गए वर्णों का सही प्रबंधन।
  • विभिन्न विभाजकों (अल्पविराम, टैब, अर्धविराम) के लिए समर्थन।
  • बड़ी फ़ाइलों को स्ट्रीमिंग तरीके से पढ़ना (पूरी मेमोरी में लोड किए बिना)।
  • स्वचालित डिसीरियलाइज़ेशन के लिए Codable के साथ एकीकरण।


2. SwiftCSV लाइब्रेरी



SwiftCSV — CSV पढ़ने और लिखने के लिए एक हल्की लाइब्रेरी। पंक्तियों, शब्दकोशों और नेस्टेड ऐरे का समर्थन करती है। Swift Package Manager के माध्यम से स्थापना:

// Package.swiftdependencies: [    .package(url: "https://github.com/swiftcsv/SwiftCSV.git", from: "0.9.0")]


फ़ाइल से CSV पढ़ने का उदाहरण:

import SwiftCSV

guard let path = Bundle.main.path(forResource: "data", ofType: "csv") else { fatalError("CSV file not found")}let csv = try CSV(url: URL(fileURLWithPath: path))

// हेडर द्वारा पंक्तियों तक पहुँचfor row in csv.rows { let name = row["name"] ?? "" let age = row["age"] ?? "" print("\\(name) is \\(age) years old")}

// कॉलम तक पहुँचlet allNames = csv.columns["name"] ?? []print(allNames)


CSV लिखना: लाइब्रेरी में अंतर्निहित लेखन विधि नहीं है, लेकिन आप मैन्युअल रूप से स्ट्रिंग बना सकते हैं:

func writeCSV(rows: [[String: String]], headers: [String]) -> String {    var csvString = headers.joined(separator: ",") + ""    for row in rows {        let values = headers.map { row[$0] ?? "" }        csvString += values.joined(separator: ",") + ""    }    return csvString}

let csvData = writeCSV(rows: data, headers: ["name", "age"])try csvData.write(to: url, atomically: true, encoding: .utf8)


3. CodableCSV लाइब्रेरी



CodableCSV — एक शक्तिशाली लाइब्रेरी जो Codable, कस्टम विभाजक, स्ट्रीमिंग रीडिंग और कॉन्फ़िगरेबल एन्कोडिंग का समर्थन करती है। जटिल परियोजनाओं के लिए आदर्श।



स्थापना:

// Package.swiftdependencies: [    .package(url: "https://github.com/dehesa/CodableCSV.git", from: "0.9.0")]


मॉडल में स्वचालित डिसीरियलाइज़ेशन के साथ पढ़ने का उदाहरण:

import CodableCSV

struct Person: Codable { let name: String let age: Int let email: String?}

let data = try Data(contentsOf: url)let decoder = CSVDecoder { config in config.headerStrategy = .firstLine // पहली पंक्ति — हेडर config.delimiter = .comma}let people = try decoder.decode([Person].self, from: data)

for person in people { print(person.name, person.age)}


CodableCSV के साथ CSV लिखना:

let encoder = CSVEncoder { config in    config.headerStrategy = .firstLine    config.delimiter = .comma}let data = try encoder.encode(people, into: Data.self)try data.write(to: url, options: .atomic)


4. मैन्युअल पार्सिंग (बिना लाइब्रेरी के)



यदि प्रोजेक्ट छोटा है और आप निर्भरताओं से बचना चाहते हैं, तो आप एक सरल पार्सर लागू कर सकते हैं।

अनुशंसाएँ