@Lici

Swift: Как сохранить результаты в txt файлы?

Программа создает переменную-строку вида:

Первый такой текст текст такой текст текст такой текст текст
[энтер, перевод строки или другой разделяющий символ]
Второй такой текст текст такой текст текст такой текст текст
[энтер, перевод строки или другой разделяющий символ]
Третий такой текст текст такой текст текст такой текст текст

Нужно сохранение каждого отдельного текста отдельным txt файлом в стиле 001.txt 002.txt 003.txt и так далее. Как это сделать?

Вот этот код может вообще сделать файл и прочитать:
let file = "file.txt"

if let dirs : [String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String] {
    let dir = dirs[0] //documents directory
    let path = dir.stringByAppendingPathComponent(file);
    let text = "some text"
    
    //writing
    text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);
    
    //reading
    let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)
    }


Насколько я выяснил эмпирически, создание файла происходит при:

text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);

А let file = "file.txt" это чисто его объявление в памяти.

Но если я не знаю сколько у меня будет строк (и файлов) то как тогда создавать файлы пока пока не создам их все для всех строк?
  • Вопрос задан
  • 5145 просмотров
Решения вопроса 1
let text = "Первый такой текст текст такой текст текст такой текст текст\n Второй такой текст текст такой текст текст такой текст текст\n Третий такой текст текст такой текст текст такой текст текст"

let lines = split(text) { $0 == "\n" }

var counter = 0

for line in lines {
    if let dirs : [String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String] {
        let dir = dirs[0] //documents directory
        let path = dir.stringByAppendingPathComponent("\(counter++).txt");

        //writing
        line.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);

        //reading
        let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)
    }
}

Пояснить код?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы