每当用户导出数据(它是JSON格式)时,它都会创建一个名为“文档”的文件夹。并且不会直接导出文件,而是为我的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本身而不是在文件夹中导出JSON。我只需要文件,以便用户共享。
答案 0 :(得分:0)
无论您将文件保存在何处,UIActivityViewController
完成后都应将其删除。您可以设置完成处理程序以删除文件。
vc.completionWithItemsHandler = { (_, _, _, _) in
try? fileManager.removeItem(at: fileURL)
}
另一种选择是将文件保存在temporaryDirectory
中而不是文档中。
let fileURL = path
.temporaryDirectory
.appendingPathComponent("\(detailedList.lname!).json")
但是您仍然应该在之后删除该文件。