'Binding' 无法在 Swift 中使用 SQLite 转换为 UILabel
'Binding' is not convertible to UILabel using SQLite in Swift
我第一次来这里遇到 Swift 与 SQLite.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 + 第三方库
您正在尝试将 UILabel
属性 本身设置为您的值 - 您想要将 text
属性 设置为 标签到你的值:
self._phraseMessageLabel.text = row[1] as! String
如果要将值赋给变量:
var message = row[1] as! String
需要注意的一件事是,使用这两种方法,您的标签文本或变量最终只会被设置为返回的 last 行的值,即已处理的行最后通过 for
循环。
除了上述撤消修复之外,我还想提供一些其他解决方案。
如果您只使用单个值,请尝试使用 Database.scalar
或 Statement.scalar
,如上例所示。
// make sure to remove "id" from your SELECT statement
self._phraseMessageLabel.text = _stmt.scalar() as! String
Note: Make sure to remove id
from your SELECT statement; scalar
returns the first column of the first row only.
使用Statement.row
光标。
_stmt.step()
self._phraseMessageLabel.text = _stmt.row[1]
我第一次来这里遇到 Swift 与 SQLite.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 + 第三方库
您正在尝试将 UILabel
属性 本身设置为您的值 - 您想要将 text
属性 设置为 标签到你的值:
self._phraseMessageLabel.text = row[1] as! String
如果要将值赋给变量:
var message = row[1] as! String
需要注意的一件事是,使用这两种方法,您的标签文本或变量最终只会被设置为返回的 last 行的值,即已处理的行最后通过 for
循环。
除了上述撤消修复之外,我还想提供一些其他解决方案。
如果您只使用单个值,请尝试使用
Database.scalar
或Statement.scalar
,如上例所示。// make sure to remove "id" from your SELECT statement self._phraseMessageLabel.text = _stmt.scalar() as! String
Note: Make sure to remove
id
from your SELECT statement;scalar
returns the first column of the first row only.使用
Statement.row
光标。_stmt.step() self._phraseMessageLabel.text = _stmt.row[1]