我只是从数据库中读取,我想输出几行。
我有以下代码:
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
,但它仍然只打印最顶行。
我只是格式化错误吗?
答案 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")