Одна проблема в том, что вы пытаетесь прочитать файл, только если он не существует, if(!(fm.fileExists
Поскольку я понял это, переписывая и пытаясь понять код, я мог бы также опубликовать свою версию вашего кода. Обратите внимание, что, поскольку я не полностью понял ваше определение класса / структуры, я сделал функции более независимыми, используя параметры и возвращаемые значения, а не свойства
Я пропустил dir
как свойство и превратил его в локальную переменную, вот моя функция записи
func write(_ array: [Any], toFile fileName: String){
guard let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
fatalError("No Document directory found")
}
let fileUrl = dir.appendingPathComponent(fileName)
(array as NSArray).write(to: fileUrl, atomically: true)
}
и функция чтения была упрощена благодаря отсутствию FileManager
func read(_ fromFile: String) -> [String]? {
guard let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
fatalError("No Document directory found")
}
let fileUrl = dir.appendingPathComponent(fromFile)
if let temp = NSArray(contentsOf: fileUrl) {
return temp as? [String]
}
return nil
}
Тестирование кода
let fileName = "toys.txt"
var allToys = ["Duck", "Playstation", "iPhone"]
write(allToys, toFile: fileName)
if let saved = read(fileName) {
allToys = saved
allToys.append("Lego")
write(allToys, toFile: fileName)
}