2015-12-27 63 views
0

我正在Swift中执行一个项目,并且正在从文件读取数据并尝试在文本视图中显示它。我正在逐行阅读。例如,如果文件中有10行,则文本视图仅显示最后一行。我想看到他们。在TextView中显示多行

我该怎么做?

我这样做是这样的:

if let aStreamReader = StreamReader(path: "historic.txt") { 
    defer { 
     aStreamReader.close() 
    } 

while let line = aStreamReader.nextLine() { 
    MyTextView.text = "\(line)" 
} 

的代码是工作在控制台上,因为如果我做一个打印每露面确定。 但在文本视图中只有最后一行是可见的。

+0

你”我们需要将文本附加到一起或将其收集到一个数组中,然后在读取文件后显示它。目前它看起来像你刚刚设置每行遇到的文本,因此只显示在运行时的最后一行 –

回答

4

如何努力:

MyTextView.text + = “(线)”

的 '+' 将追加而不是取代。

您可能必须添加\ n中的线串后,创建一个新的行:

MyTextView.text + = “(行)\ n” 个

更新:

我忘了你不能追加到textview上,所以在循环之前创建一个空字符串,然后将该行添加到while循环中的字符串中。后来终于设置TextView的文本到totalString变量在循环后:

var totalString = "" 
while let line = aStreamReader.nextLine() { 
    totalString = totalString + line + "\n" 
} 
MyTextView.text = totalString 

希望帮助

+0

我得到这个消息说,二元运算符+ =不能被加到一个字符串... – hnegrao

+0

而这一个是不是内存效率 –

+0

尝试更新回答 –

0

确保标签的lines属性的值是0和尝试这个

if let aStreamReader = StreamReader(path: "historic.txt") { 
defer { 
    aStreamReader.close() 
} 
var str = "" 
while let line = aStreamReader.nextLine() { 
    str = str + line + "\n" 
} 
MyTextView.text = str