Lesen Sie eine Datei / URL zeilenweise in Swift

Ich versuche, eine Datei zu lesen, die in einer Datei angegeben istNSURL und laden Sie es in ein Array, wobei die Elemente durch ein Zeilenumbruchszeichen getrennt sind\n.

So habe ich es bisher gemacht:

var possList: NSString? = NSString.stringWithContentsOfURL(filePath.URL) as? NSString
if var list = possList {
    list = list.componentsSeparatedByString("\n") as NSString[]
    return list
}
else {
    //return empty list
}

Ich bin aus mehreren Gründen nicht sehr glücklich damit. Erstens arbeite ich mit Dateien, die zwischen einigen Kilobyte und Hunderten von MB groß sind. Wie Sie sich vorstellen können, ist die Arbeit mit so großen Zeichenfolgen langsam und unhandlich. Zweitens friert dies die Benutzeroberfläche ein, wenn sie ausgeführt wird - wiederum nicht gut.

Ich habe versucht, diesen Code in einem separaten Thread auszuführen, aber ich hatte Probleme damit, und außerdem ist das Problem des Umgangs mit großen Zeichenfolgen immer noch nicht gelöst.

Was ich tun möchte, ist etwas in der Art des folgenden Pseudocodes:

var aStreamReader = new StreamReader(from_file_or_url)
while aStreamReader.hasNextLine == true {
    currentline = aStreamReader.nextLine()
    list.addItem(currentline)
}

Wie würde ich das in Swift erreichen?

Ein paar Anmerkungen zu den Dateien, aus denen ich lese: Alle Dateien bestehen aus kurzen (<255 Zeichen) Zeichenfolgen, die durch einen der beiden voneinander getrennt sind\n oder\r\n. Die Länge der Dateien reicht von ~ 100 Zeilen bis zu über 50 Millionen Zeilen. Sie können europäische Zeichen und / oder Zeichen mit Akzenten enthalten.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage