UITextView不打印多行

时间:2017-03-23 12:05:09

标签: ios swift xcode

我只是从数据库中读取,我想输出几行。

我有以下代码:

 for row in try inventoryDB.prepare("SELECT name, amount FROM inventory") {
       textView1.text = ("name: \(row[0]), amount: \(row[1])")
       //textView1.text=("test \n")
       // id: Optional(2), email: Optional("betty@icloud.com")
       // id: Optional(3), email: Optional("cathy@icloud.com")
 }

并且只打印顶行。

将其更改为

 print("name: \(row[0]), amount: \(row[1])")

在控制台中逐行显示所有数据,所以我知道它就在那里。

我尝试将换行符\n附加到UITextViewcall,但它仍然只打印最顶行。

我只是格式化错误吗?

4 个答案:

答案 0 :(得分:3)

您正在为数据库的每一行替换文本视图的内容,因此一旦完成,您将在文本视图中以最后一行值结束。您可以先将所有内容放入字符串中,最后将其显示在文本视图中,如下所示:

var txt = ""
for row in try inventoryDB.prepare("SELECT name, amount FROM inventory") {
       txt  += "name: \(row[0]), amount: \(row[1])\n" 
       //textView1.text=("test \n")
       // id: Optional(2), email: Optional("betty@icloud.com")
       // id: Optional(3), email: Optional("cathy@icloud.com")
}
textView1.text = txt

答案 1 :(得分:1)

您为每行替换textView1的值。我会将您的数据映射到一个字符串数组。然后,您可以使用换行符连接每个元素。

let text = try inventoryDB.prepare("SELECT name, amount FROM inventory").map({ row -> String in
       return "name: \(row[0]), amount: \(row[1])"
 }).joined(separator: "\n")
textView1.text = text

答案 2 :(得分:0)

问题是您正在循环中更改TextView的文本,而不是追加从循环中获取的字符串。

试试这个:

var alltext = ""
for row in try inventoryDB.prepare("SELECT name, amount FROM inventory"){
alltext = alltext + "name: \(row[0]), amount: \(row[1]) \n"
}
textView1.text = alltext

确保textView格式化为显示多行。

答案 3 :(得分:-1)

在swift 3.0中,这对我有用:

print("name: \(row[0]), amount: \(row[1])", terminator: "\n")