Swift (iOS/macOS) में ZIP/आर्काइव के साथ कार्य: पूर्ण गाइड

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

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

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

Swift (iOS/macOS) में ZIP/आर्काइव के साथ कार्य



iOS और macOS के तहत आधुनिक डेवलपमेंट में, अक्सर फ़ाइलों को ZIP आर्काइव में संपीड़ित करने या उनसे डेटा निकालने की आवश्यकता होती है। यह स्थान बचाने, नेटवर्क पर डेटा स्थानांतरित करने या बैकअप व्यवस्थित करने के लिए आवश्यक हो सकता है। इस लेख में, हम दो मुख्य दृष्टिकोणों पर विचार करेंगे: Foundation की अंतर्निहित क्षमताओं का उपयोग और लोकप्रिय तृतीय-पक्ष लाइब्रेरी ZipFoundation का उपयोग।



Foundation के अंतर्निहित साधन (NSFileCoordinator + निम्न-स्तरीय कार्य)



Apple Foundation में ZIP के साथ काम करने के लिए उच्च-स्तरीय API प्रदान नहीं करता है। हालाँकि, iOS 12 / macOS 10.14 से शुरू करके, कुछ संचालन के लिए NSFileCoordinator और NSFileWrapper का उपयोग करना संभव हो गया है। लेकिन ZIP के साथ पूर्ण कार्य के लिए, अक्सर C-इंटरफ़ेस के माध्यम से सिस्टम उपयोगिता libz का उपयोग किया जाता है।



उदाहरण: libz के साथ डेटा संपीड़न

import Compressionimport Foundation

func compressData(_ data: Data) -> Data? { let sourceData = data as NSData let compressedData = NSMutableData(length: data.count)! var compressedSize = data.count let result = compression_encode( compressedData.mutableBytes.assumingMemoryBound(to: UInt8.self), &compressedSize, sourceData.bytes.assumingMemoryBound(to: UInt8.self), data.count, nil, COMPRESSION_ZLIB ) guard result == COMPRESSION_STATUS_OK else { return nil } compressedData.length = compressedSize return compressedData as Data}


ZipFoundation लाइब्रेरी (अनुशंसित तरीका)



ZipFoundation Swift पर ZIP आर्काइव के साथ काम करने के लिए एक हल्की, ओपन-सोर्स लाइब्रेरी है। यह iOS, macOS, tvOS और watchOS का समर्थन करती है। Swift Package Manager के माध्यम से स्थापना:



// Package.swift में या Xcode के माध्यम सेdependencies: [    .package(url: "https://github.com/weichsel/ZIPFoundation.git", from: "0.9.0")]


ZipFoundation की मुख्य क्षमताएँ:

  • फ़ाइलों और फ़ोल्डरों से ZIP आर्काइव बनाना
  • व्यक्तिगत फ़ाइलों या पूरे आर्काइव को निकालना
  • पासवर्ड समर्थन (AES-256)
  • बड़ी फ़ाइलों के लिए स्ट्रीम के साथ कार्य
  • macOS और iOS के साथ संगतता


उदाहरण 1: ZIP आर्काइव बनाना

import ZIPFoundationimport Foundation

func createZip(from sourceURL: URL, to destinationURL: URL) throws { let fileManager = FileManager() // फ़ोल्डर से आर्काइव बनाएँ try fileManager.zipItem(at: sourceURL, to: destinationURL) // या एक फ़ाइल से // try fileManager.zipItem(at: sourceURL, to: destinationURL, // shouldKeepParent: false)}

// उपयोगlet documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!let sourceFolder = documents.appendingPathComponent("MyData")let archiveURL = documents.appendingPathComponent("backup.zip")

do { try createZip(from: sourceFolder, to: archiveURL) print("आर्काइव बनाया गया: \\(archiveURL.path)")} catch { print("त्रुटि: \\(error)")}


उदाहरण 2: ZIP आर्काइव को अनज़िप करना

import ZIPFoundation

func unzipArchive(at sourceURL: URL, to destinationURL: URL) throws { let fileManager = FileManager() // गंतव्य फ़ोल्डर बनाएँ, यदि मौजूद नहीं है try fileManager.createDirectory(at: destinationURL, withIntermediateDirectories: true) // अनज़िप करें try fileManager.unzipItem(at: sourceURL, to: destinationURL)}

// उपयोगlet archiveURL = documents.appendingPathComponent("backup.zip")let extractFolder = documents.appendingPathComponent("ExtractedData")

do { try unzipArchive(at: archiveURL, to: extractFolder) print("अनज़िप पूर्ण हुआ")} catch {

अनुशंसाएँ