Я пытаюсь прочитать файл, указанный в NSURL
, и загрузить его в массив с элементами, разделенными символом новой строки \n
.
Вот как я это сделал до сих пор:
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
}
Я не очень доволен этим по нескольким причинам. Во-первых, я работаю с файлами размером от нескольких килобайт до сотен МБ. Как вы можете себе представить, работа с строками эта большая медленная и громоздкая. Во-вторых, это замораживает пользовательский интерфейс при его выполнении - снова, не хорошо.
Я изучил запуск этого кода в отдельном потоке, но у меня были проблемы с этим, и, кроме того, он все еще не решает проблему работы с огромными строками.
То, что я хотел бы сделать, это что-то вроде строк псевдокода:
var aStreamReader = new StreamReader(from_file_or_url)
while aStreamReader.hasNextLine == true {
currentline = aStreamReader.nextLine()
list.addItem(currentline)
}
Как бы это сделать в Swift?
Несколько заметок о файлах, которые я читаю из: Все файлы состоят из коротких (< 255 символов), разделенных символом \n
или \r\n
. Длина файлов варьируется от ~ 100 строк до более чем 50 миллионов строк. Они могут содержать европейские символы и/или символы с акцентами.