У меня есть приложение для iOS, которое я использую для запуска действия.Это действие создает много текста, и я хочу показать его пользователю по мере его обновления.Мой текущий метод дросселирует более длинный (5k линия) вывод.Что я могу сделать, чтобы справиться с этим после усечения после нескольких сотен строк?
В настоящее время я делаю вывод потока процесса в файл.Затем я беру FileHandle
для этого файла и создаю readabilityHandler
, который передает фрагмент моему UIViewController
:
stdout_handler = FileHandle(forReadingAtPath: "my.txt")
stdout_handler?.readabilityHandler = { handle in
let data = handle.readData(ofLength: 100)
if let snippet = String(data: data, encoding: .utf8) {
self.delegate?.append_script(text: snippet)
}
}
У меня есть UIViewController
, делегат, беру эту строку идобавьте его к UITextView.text
func append_script(text: String) {
DispatchQueue.main.async {
if self.script_output.text == nil {
self.script_output.text = text
} else {
self.script_output.text.append(text)
}
let last_line = NSRange(location: self.script_output.text.count - 1, length: 1)
self.script_output.scrollRangeToVisible(last_line)
}
}
В простом случае это достаточно хорошо;но наверняка есть лучший способ.