有没有办法阻止 NSFilemanger 导出数据和创建文件夹?

Is there a way to prevent NSFilemanger from exporting data and creating a folder?

每当用户导出数据(它是 JSON 格式)时,它都会创建一个名为 "Documents." 的文件夹,并且不会直接导出文件,它会为我的 JSON导出和 CSV。

我试过更改 fileManager 设置,但我尝试过的似乎没有任何效果,包括更改默认值、for 和 in。后两者是在我调用 fileManger.url

这是我 JSON

的主要出口
// MARK: - Export to Share
    func toExportJSON() {
        // Call to clear Chached exported files
        clearAllFile()
        var exportArrayJson = [exportJsonData]()

        var exportArray = [Item]()
        exportArray = fetchedRC.fetchedObjects!

        for i in exportArray {

            let newI = exportJsonData(name: i.name!, pricePer: i.pricePer, totalPrice: i.totalPrice!, isComplete: i.isComplete, Qty: i.quantity, Cat: i.catagory!, Priority: i.priority, DNH: i.didHave)

            exportArrayJson.append(newI)
        }

        let encoder = JSONEncoder()
        encoder.outputFormatting = .prettyPrinted
        encoder.keyEncodingStrategy = .convertToSnakeCase

        var jsonDataTop = Data()
        do {
            let jsonData = try encoder.encode(exportArrayJson)
            jsonDataTop = jsonData

        // Old Code to print for testing
        ///if let jsonString = String(data: jsonData, encoding: .utf8) {
            ///print(jsonString)
            ///print(jsonData)
        ///}

            let fileManager = FileManager.default
            do {

                let path = try fileManager.url(for: .documentDirectory, in: .allDomainsMask, appropriateFor: nil, create: false)
                let fileURL = path.appendingPathComponent("\(detailedList.lname!).json")
                try jsonDataTop.write(to: fileURL)//.write(to: fileURL)//write(to: fileURL, encoding: .utf8)

                let vc = UIActivityViewController(activityItems: [path], applicationActivities: [])

                present(vc, animated: true, completion: nil)
            } catch {
                print("error creating file")
            }
        } catch {
            print(error.localizedDescription)
        }
    }

我希望它能自行导出 JSON,而不是在文件夹中。我只想要文件,以便用户更轻松地共享。

无论将文件保存在何处,都应在 UIActivityViewController 完成后将其删除。您可以设置完成处理程序来删除文件。

vc.completionWithItemsHandler = { (_, _, _, _) in
    try? fileManager.removeItem(at: fileURL)
}

另一种选择是将文件保存在 temporaryDirectory 而不是文档中。

let fileURL = path
    .temporaryDirectory
    .appendingPathComponent("\(detailedList.lname!).json")

但您仍应在之后删除该文件。