如何有效地用流内容填充UITextView?

时间:2018-12-19 01:15:39

标签: ios swift uikit

我有一个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)
    }
}

在简单的情况下,就足够了;但肯定有更好的方法。

0 个答案:

没有答案