ios - स्विफ्ट 4 में एप्पल के फाइल ऐप पर स्थित फ़ोल्डर में फाइल कैसे लिखें?



swift xml (1)

आप UIDocumentInteractionController का उपयोग कर सकते हैं और उपयोगकर्ता को वह चुन सकते हैं जहां वह आपकी फ़ाइल सहेजना चाहता है जब आप अपना url साझा करते हैं। उपयोगकर्ता को केवल फ़ाइलों को सहेजने का चयन करने की आवश्यकता है और आपके द्वारा निर्यात की जा रही फ़ाइल को बचाने के लिए कौन सी निर्देशिका चुनें। आप अपने दस्तावेज़ बंडल में या अपने ऐप से सुलभ किसी अन्य फ़ोल्डर में, अपने ऐप बंडल के अंदर स्थित किसी भी फ़ाइल प्रकार को साझा करने के लिए UIDocumentInteractionController का उपयोग कर सकते हैं।

class ViewController: UIViewController {
    let documentInteractionController = UIDocumentInteractionController()
    func share(url: URL) {
        documentInteractionController.url = url
        documentInteractionController.uti = url.typeIdentifier ?? "public.data, public.content"
        documentInteractionController.name = url.localizedName ?? url.lastPathComponent
        documentInteractionController.presentOptionsMenu(from: view.frame, in: view, animated: true)
    }
    @IBAction func shareAction(_ sender: UIButton) {
        guard let url = URL(string: "https://www.ibm.com/support/knowledgecenter/SVU13_7.2.1/com.ibm.ismsaas.doc/reference/AssetsImportCompleteSample.csv?view=kc") else { return }
        URLSession.shared.dataTask(with: url) { data, response, error in
            guard let data = data, error == nil else { return }
            let tmpURL = FileManager.default.temporaryDirectory
                .appendingPathComponent(response?.suggestedFilename ?? "fileName.csv")
            do {
                try data.write(to: tmpURL)
                DispatchQueue.main.async {
                    self.share(url: tmpURL)
                }
            } catch { 
                print(error)
            }

        }.resume()
    }
}

extension URL {
    var typeIdentifier: String? {
        return (try? resourceValues(forKeys: [.typeIdentifierKey]))?.typeIdentifier
    }
    var localizedName: String? {
        return (try? resourceValues(forKeys: [.localizedNameKey]))?.localizedName
    }
}

मेरे पास मेरे Xcode प्रोजेक्ट में एक XML फ़ाइल है, और मैं पहले इसे डिस्क पर सहेजने की कोशिश कर रहा हूं, और दूसरी बात यह कि मैं कैसे बता सकता हूं कि मैंने इसे सफलतापूर्वक स्वीकार कर लिया है? क्या यह उचित दृष्टिकोण है? आईओएस 11 में नए "फाइल" फ़ोल्डर में नेविगेट किए गए सिम्युलेटर का उपयोग करके मैं इसे नहीं देखता हूं, लेकिन मुझे यकीन नहीं है कि यह होना चाहिए या नहीं?

guard let path = Bundle.main.url(forResource: "sample", withExtension: "xml") else {print("NO URL"); return}
    let sample = try? Data(contentsOf: path)


print("sample XML = \(String(describing: sample?.debugDescription))")

//put xml file on the device
let filename = getDocumentsDirectory().appendingPathComponent("sample.xml")
do {
    try sample?.write(to: filename)
} catch {
    print("ERROR")
}

यदि फ़ाइल मौजूद है तो मेरा चेक शामिल करने के लिए अपडेट किया गया:

 //check if file exists
    let checkPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
    let url = URL(fileURLWithPath: checkPath)
let filePath = url.appendingPathComponent("sample.xml").path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
    print("FILE AVAILABLE")
} else {
    print("FILE NOT AVAILABLE")
}




xml