Вопрос по string, file, swift – Быстрый текстовый файл в массив строк

8

Мне было интересно, что самое простое и чистое для чтения текстового файла в массив строк в быстрой.

Текстовый файл:

line 1
line 2
line 3 
line 4

В массив, как это:

var array = ["line 1","line 2","line 3","line 4"]

Я также хотел бы знать, как сделать похожую вещь в структуру, как это:

Struct struct{
   var name: String!
   var email: String!
}

поэтому возьмите текстовый файл и поместите его в структуры в массиве.

Спасибо за помощь!

Смотрите этот пост для отличного обсуждения вариантов преобразования текстового файла в массив строк.codereview.stackexchange.com/a/100813/79551 Suragch

Ваш Ответ

6   ответов
12

Обновлено для Swift 3

    
    do {
        // This solution assumes  you've got the file in your bundle
        if let path = Bundle.main.path(forResource: "YourTextFilename", ofType: "txt"){
            let data = try String(contentsOfFile:path, encoding: String.Encoding.utf8)                
            arrayOfStrings = data.components(separatedBy: "\n")
            print(arrayOfStrings)
        }
    } catch let err as NSError {
        // do something with Error
        print(err)
    }
есть ли где-нибудь версия для swift5? :) esaruoho
9

let text = String(contentsOfFile: someFile, encoding: NSUTF8StringEncoding, error: nil)

Затем вы разделяете его по строке, используяcomponentsSeparatedByString метод:

let lines : [String] = text.componentsSeparatedByString("\n")
новый синтаксис Swift будет:try! let text = String(contentsOfFile: someFile!, encoding: NSUTF8StringEncoding) stackoverflow.com/questions/32663872/... thumbtackthief
Обратите внимание, что некоторые файлы не просто\n как маркер новой строки. Вы можете рассмотреть возможность использованияNSCharacterSet.newlineCharacterSet() а такжеcomponentsSeparatedByCharactersInSet. Suragch
1

В Swift 3 у меня работает как ниже:

Import Foundation

let lines : [String] = contents.components(separatedBy: "\n")
1

Обновлено для Swift 4:

    let file = try String(contentsOfFile: path!)
    let text: [String] = file.components(separatedBy: "\n")
} catch {
    Swift.print("Fatal Error: Couldn't read the contents!")
}
@esaruoho прямо здесь Cristian
большое спасибо! :) и как я смогу вывести этот контент в массив? (один текстовый файл, один массив) esaruoho
есть ли где-нибудь версия для swift5? :) esaruoho
1

Свифт 4:

do {
    let contents = try String(contentsOfFile: file, encoding: String.Encoding.utf8)
    let lines : [String] = contents.components(separatedBy: "\n")    
} catch let error as NSError {
    print(error.localizedDescription)
}
есть ли где-нибудь версия для swift5? :) esaruoho
2

var myString = "Here is my string"

var myArray : [String] = myString.componentsSeparatedByString(" ")

Это возвращает массив строк со следующими значениями:["Here", "is", "my", "string"]

Похожие вопросы