繁体   English   中英

在Swift中使用闭包从函数中检索字符串值

[英]Retrieve String value from function with closure in Swift

我正在尝试从Firebase检索字符串值,以获取具有唯一UID的每个用户名,该UID传递给函数,该函数返回用户的用户名。 但是-由于ObserveEventclosures ,因此我无法返回任何值,因为操作是异步发生的(?)。 我想知道这是否是实现此目标的方法?

该函数如下所示:

func GetUsername(uid:String) -> String {
    var username = String()
    firebase.child("Users").child(uid).observeSingleEventOfType(.Value) { (snapshot:FIRDataSnapshot) in

        username = snapshot.value!["Username"] as! String

    }

    return username
}

显然这是行不通的,但是我希望能够通过执行GetUsername(“ whatevertheidmightbe”)来获取数据。 有想法吗?

您需要像这样创建完成处理程序

func GetUsername(uid:String , completion: (String) -> ()) {
    firebase.child("Users").child(uid).observeSingleEventOfType(.Value) { (snapshot:FIRDataSnapshot) in
    if let username = snapshot.value!["Username"] as? String
        completion(username)
    }
    else {
        completion("")
    }
}

然后这样调用函数

self.GetUsername(str) { (name) -> () in
    if name.characters.count > 0 {
         print(name)
    }
    else {
         print("Not found")
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM