'绑定'在Swift中不能使用SQLite转换为UILabel

时间:2015-04-09 21:08:40

标签: ios swift sqlite.swift

我第一次使用SQLite.Swift库与Swift相关的问题。

我有一个db.prepare语句的for循环,但在尝试将数组值分配给UILabel时遇到困难。

    // Prepare query to retrieve the message
var _phraseMessage:String = ""    
let _stmt = _db.prepare("SELECT id, message FROM messages WHERE language = 'EN' AND category = 1 and username = 'user' LIMIT 1")

            for row in _stmt {

                println("id: \(row[0]), message: \(row[1])")

                self._phraseMessageLabel = row[1] --> i get an error here **"'Binding' is not convertible to UILabel"**


            }

如何将row[1]中的值分配给我的UILabel?或者如果可能的话,甚至更好地使用String变量。

提前致谢!

免责声明:这是我第一次尝试使用Swift +第三方库

2 个答案:

答案 0 :(得分:1)

您尝试将UILabel属性设置为您的值 - 您希望将标签上的text属性设置为您的值:

self._phraseMessageLabel.text = row[1] as! String

如果要将值赋给变量:

var message = row[1] as! String

有一点需要注意的是,使用这两种方法时,标签文本或变量最终只会被设置为返回的 last 行的值,即{{ 1}}循环。

答案 1 :(得分:0)

除了Undo上面的修复,我还想提供其他一些解决方案。

  1. 如果您只使用单个值,请尝试使用Database.scalarStatement.scalar,如上例所示。

    // make sure to remove "id" from your SELECT statement
    self._phraseMessageLabel.text = _stmt.scalar() as! String
    
      

    注意:确保从SELECT语句中删除id; scalar仅返回第一行的第一列。

  2. 使用Statement.row光标。

    _stmt.step()
    self._phraseMessageLabel.text = _stmt.row[1]