Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 正在swift中从firebase读取数据,但无法显示数据。可能是可变范围错误_Ios_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios 正在swift中从firebase读取数据,但无法显示数据。可能是可变范围错误

Ios 正在swift中从firebase读取数据,但无法显示数据。可能是可变范围错误,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,` 正在Swift中从firebase读取数据,但无法显示数据。可能是可变范围错误。打印输出(值?[“名称”]为?字符串???”是预期结果,但未分配给self.name变量。我相信这是一个范围错误,但我还不确定。非常感谢所有帮助,因为我对iOS和Swift比较陌生。因为从Firebase接收数据是一项异步任务,所以不能这样做。您必须为此使用完成处理程序 首先添加完成处理程序作为函数的参数,也不需要返回类型 import UIKit import FirebaseDatabase import F

`


正在Swift中从firebase读取数据,但无法显示数据。可能是可变范围错误。打印输出(值?[“名称”]为?字符串???”是预期结果,但未分配给self.name变量。我相信这是一个范围错误,但我还不确定。非常感谢所有帮助,因为我对iOS和Swift比较陌生。

因为从Firebase接收数据是一项异步任务,所以不能这样做。您必须为此使用完成处理程序

首先添加完成处理程序作为函数的参数,也不需要返回类型

import UIKit
import FirebaseDatabase
import FirebaseAuth
class mapVC: UIViewController {
    var name:String = ""
    var number:String = ""

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated:true);
    var dict = fetchData()
    print(dict)

}
func fetchData()->[String:String]{
    var ref: DatabaseReference!
    ref = Database.database().reference()
    var uid:String=""
    var email:String=""
    let user = Auth.auth().currentUser
    if let user = user {
        let uid_local = user.uid
        let email_local = user.email
        uid=uid_local
        email=email_local!
    }
    ref.child("Users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
        let value = snapshot.value as? NSDictionary
        self.name = value?["name"] as? String ?? ""
        print(value?["name"] as? String ?? "")
        self.number = value?["number"] as? String ?? ""
        print(value?["number"] as? String ?? "")
    })
    return(["Name":name,"Number":number,"Email":email,"UID":uid]);
}
}
然后在收到数据时调用completion

func fetchData(_ completion: @escaping ([String:String]) -> ())
现在,您可以通过关闭
fetchData
函数从Firebase访问数据

ref.child("Users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
    ...
    completion(["Name":name,"Number":number,"Email":email,"UID":uid])
})

注意:从Firebase接收数据之前,您不会有这些数据,因此需要一些时间

因为从Firebase接收数据是一项异步任务,您不能这样做。您必须为此使用完成处理程序

首先添加完成处理程序作为函数的参数,也不需要返回类型

import UIKit
import FirebaseDatabase
import FirebaseAuth
class mapVC: UIViewController {
    var name:String = ""
    var number:String = ""

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated:true);
    var dict = fetchData()
    print(dict)

}
func fetchData()->[String:String]{
    var ref: DatabaseReference!
    ref = Database.database().reference()
    var uid:String=""
    var email:String=""
    let user = Auth.auth().currentUser
    if let user = user {
        let uid_local = user.uid
        let email_local = user.email
        uid=uid_local
        email=email_local!
    }
    ref.child("Users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
        let value = snapshot.value as? NSDictionary
        self.name = value?["name"] as? String ?? ""
        print(value?["name"] as? String ?? "")
        self.number = value?["number"] as? String ?? ""
        print(value?["number"] as? String ?? "")
    })
    return(["Name":name,"Number":number,"Email":email,"UID":uid]);
}
}
然后在收到数据时调用completion

func fetchData(_ completion: @escaping ([String:String]) -> ())
现在,您可以通过关闭
fetchData
函数从Firebase访问数据

ref.child("Users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
    ...
    completion(["Name":name,"Number":number,"Email":email,"UID":uid])
})

注意:从Firebase接收数据之前,您不会有这些数据,因此需要一些时间

您是指这样的事情吗?您是指这样的事情吗-