ios swift xml

ios - ¿Cómo escribir un archivo en una carpeta ubicada en la aplicación de archivos de Apple en Swift 4?



xml (1)

Puede usar UIDocumentInteractionController y dejar que el usuario seleccione dónde quiere guardar su archivo cuando comparta su URL. El usuario solo tiene que seleccionar guardar en archivos y elegir qué directorio guardar el archivo que está exportando. Puede usar UIDocumentInteractionController para compartir cualquier tipo de archivo ubicado dentro de su paquete de aplicaciones, en su directorio de documentos u otra carpeta accesible desde su aplicación.

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 } }

Tengo un archivo XML en mi proyecto Xcode, y estoy intentando guardarlo primero en el disco, y en segundo lugar, ¿cómo puedo saber si lo he guardado correctamente? ¿Es este el enfoque adecuado? Utilizando el simulador, navegué a la nueva carpeta "Archivos" en iOS 11 y no lo veo, pero no estoy seguro de si debería estar allí o no.

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

actualizado para incluir mi verificación si el archivo existe:

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