我正在从使用WebKit的网页中获取一系列句子,我想将所有句子单独一行打印到textview中。我想我有一个循环来打印整个数组,但是它只打印最后一句话。
这就是我所拥有的
extension ViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
// Receive message from Javascript, check & process message
if message.name == "english", let englishLines = message.body as? [String] {
// All of the sentences are printing in my console
print(englishLines)
//Try Loop to print all of sentences on individual line
for englishLine in englishLines {
let eachEnglishLine = englishLine
textView.text = eachEnglishLine
}
}
textView中仅显示最后一句话。
答案 0 :(得分:7)
有一种简单得多的方法。不要为循环而烦恼。
将循环替换为:
textView.text = englishLines.joined(separator: "\n")
您的代码不起作用,因为您没有追加每行。您只需将每个值分配给文本视图,以便仅显示最后分配的行。
答案 1 :(得分:3)
问题是您在循环的每次迭代中都将文本设置为全新的String,而不是添加到文本中。
相反,请尝试以下操作:
textView.text += eachEnglishLine
如果每个EnglishLine还没有包含换行符,则需要自己添加。在这种情况下,将是:
textView.text += “\(eachEnglishLine)\n”