我在一个项目中使用 Swift,并使用SQLite.swift进行数据库处理。我正在尝试从我的数据库中检索最新的条目,如下所示:
func returnLatestEmailAddressFromEmailsTable() -> String{
let dbPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as String
let db = Database("\(dbPath)/db.sqlite3")
let emails = db["emails"]
let email = Expression<String>("email")
let time = Expression<Int>("time")
var returnEmail:String = ""
for res in emails.limit(1).order(time.desc) {
returnEmail = res[email]
println("from inside: \(returnEmail)")
}
return returnEmail
}
我正在尝试测试从上述函数返回的字符串,如下所示:
println("from outside: \(returnLatestEmailAddressFromEmailsTable())")
请注意我如何从函数内部和外部打印值。在内部,它每次都有效。我正在与“来自外部:”部分作斗争。
有时该函数返回正确的电子邮件,但有时它返回“”(推测该值未在 for 循环中设置)。
如何添加“阻塞”功能,以便调用 returnLatestEmailAddressFromEmailsTable() 将始终首先评估 for 循环,然后才返回值?