2017-03-23 4 views
0

私はデータベースから読み込んでおり、いくつかの行を出力したいと思います。UITextViewは複数の行を印刷しません

は、私は次のコードを持っている:

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("[email protected]") 
     // id: Optional(3), email: Optional("[email protected]") 
} 

を、それはちょうど一番上の行を出力します。

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

表示し、すべてのデータ、コンソールのラインごとにそれを変更するので、私はそれがあると知っています。

私はUITextViewcallに改行を追加しようとしましたが、\nはまだ最上位の行だけを表示しています。

私は間違った書式を設定していますか?

答えて

3

DBの各行に対してテキストビューの内容を置き換えて、完了したらテキストビューで最後の行の値になります。あなたは、文字列に最初にすべてのコンテンツを取得し、最終的には以下のように、テキストビューで表示することができます

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("[email protected]") 
     // id: Optional(3), email: Optional("[email protected]") 
} 
textView1.text = txt 
+0

Ahhh!私は今参照してください。私は以前にtextViewに+ =しようとしましたが、私はできなかったと私に伝えました - 私は既存の文字列でそれを試しませんでした。わかった。ありがとう! – AON

+0

喜んで助けになる:) – Fahim

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があまりに以上の1行を表示するようにフォーマットされていることを確認してください。 SWIFT 3.0で

-1

が、これは私の仕事:

print("name: \(row[0]), amount: \(row[1])", terminator: "\n") 
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 
関連する問題