Как разрешить пользователю настраивать имя файла при сохранении? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть приложение, которое может экспортировать информацию, вводимую пользователем в файл CSV. В коде я установил имя файла PatientInfo. Однако, когда я получаю новые данные и нажимаю сохранить снова. Старый будет перезаписан. Как автоматически создать новый CSV-файл с именем возможно PatientInfo_01? Или, что еще лучше, разрешите пользователю вводить имя файла после нажатия кнопки сохранения.

Это оригинальный код, который у меня есть:

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

1 Ответ

0 голосов
/ 29 апреля 2019

Попробуйте это:

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.

...