ios - 如何让用户在保存时自定义文件名?
问题描述
我有一个可以在 csv 文件中导出用户输入信息的应用程序。我在代码中将文件名设置为 PatientInfo。但是,当我收到新数据并再次单击保存时。旧的将被覆盖。如何自动创建一个名为 PatientInfo_01 的新 csv 文件?或者更好的是,让用户在点击保存按钮后输入文件名。
这是我的原始代码:
var patientsData:[Dictionary<String, AnyObject>] = Array()
var dct = Dictionary<String, AnyObject>()
func createCSVX(from recArray:[Dictionary<String, AnyObject>]) {
var csvString = "\("Time"),\("Force")\n"
dct.updateValue(-TestDraw.time as AnyObject, forKey: "T")
for i in 0...TestDraw.force.count-1 {
dct.updateValue(TestDraw.force[i] as AnyObject, forKey: "F")
patientsData.append(dct)
csvString = csvString.appending("\(String(describing: dct["T"]!)), \(String(describing: dct["F"]!))\n")
}
let fileManager = FileManager.default
do {
let path = try fileManager.url(for: .documentDirectory, in: .allDomainsMask, appropriateFor: nil, create: false)
let fileURL = path.appendingPathComponent("PatientInfo.csv")
try csvString.write(to: fileURL, atomically: true, encoding: .utf8)
} catch {
print("error creating file")
}
}
解决方案
尝试这个:
var counter = 0
let path = try fileManager.url(for: .documentDirectory, in: .allDomainsMask, appropriateFor: nil, create: false)
let fileName = String(format:"PatientInfo%d.csv",counter)
let fileURL = path.appendingPathComponent(fileName)
try csvString.write(to: fileURL, atomically: true, encoding: .utf8)
在下一次迭代中,将计数器值增加 1。
推荐阅读
- python-3.x - selenium.common.exceptions.NoSuchElementException 错误尝试使用 Selenium 和 Python 识别要单击的元素
- php - 在 Laravel 上获取控制器实例的空白屏幕
- android - 如何让imageView全屏android
- python - 缺少某种形式的单词不是用 wordnet 生成的
- android - Android studio firebase auth uid在数据库中使用
- javascript - 这个 Three.js skybox 代码里面有什么问题?
- python-3.x - 如何根据其他列字符串为新列赋值?
- amazon-web-services - 如何验证接口 VPC 终端节点运行良好?
- selenium - 如何运行跨浏览器测试 - BrowserStack 上的 Selenium 测试
- google-cloud-platform - 已恢复的 Google Cloud 项目中的权限问题