Как эффективно заполнить UITextView потоковым контентом? - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть приложение для 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)
    }
}

В простом случае это достаточно хорошо;но наверняка есть лучший способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...