我有以下功能:
public func tableView(_ tableView: UITableView, didSelectRowAt
indexPath: IndexPath)
{
let currentcell = telefonbog[indexPath.row]
ref = FIRDatabase.database().reference()
ref?.child("medarbejder").child(currentcell).observeSingleEvent(of:
.value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let Mail = (value?["Mail"] as? String)!
let Mobil = (value?["Mobil"] as? String)!
// self.test.text = Mail
self.performSegue(withIdentifier: "kontakt", sender: self)
})
}
我认为邮件和美孚没有"导出"超出这个功能。 我的问题是我需要在下一个窗口中使用这两个字符串。但他们是空的?
答案 0 :(得分:0)
您将Mail和Mobil定义为本地变量,一旦您离开函数(或在这种情况下为闭包),它将过期并变为未定义 - 这是变量在Swift(或漂亮)中的正常行为方式大多数语言)。
如果你想保持变量存活,需要在函数外部定义它们作为类变量,或者将它们作为参数传递给另一个函数。
var mail = ""
var mobil = ""
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
let currentcell = telefonbog[indexPath.row]
ref = FIRDatabase.database().reference()
ref?.child("medarbejder").child(currentcell).observeSingleEvent(of:
.value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
self.mail = (value?["Mail"] as? String)!
self.mobil = (value?["Mobil"] as? String)!
self.performSegue(withIdentifier: "kontakt", sender: self)
})
}
或
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
let currentcell = telefonbog[indexPath.row]
ref = FIRDatabase.database().reference()
ref?.child("medarbejder").child(currentcell).observeSingleEvent(of:
.value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let mail = (value?["Mail"] as? String)!
let mobil = (value?["Mobil"] as? String)!
self.doSegue(theMail: mail, theMobile: mobile)
})
}
func doSegue (theMail: String, theMobile: String) {
//do something with mail and mobile var
self.performSegue(withIdentifier: "kontakt", sender: self)
{
答案 1 :(得分:0)
这也是我的第一个猜测。但是下面的代码是dosent,func中的一个断点显示Var设置正确,但是在退出func之后的断点显示它会回到“”
var Mail = ""
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
let currentcell = telefonbog[indexPath.row]
ref = FIRDatabase.database().reference()
ref?.child("medarbejder").child(currentcell).observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
self.Mail = (value?["Mail"] as? String)!
// let Mobil = (value?["Mobil"] as? String)!
self.performSegue(withIdentifier: "kontakt", sender: self)
})
}