在swift中,如何使功能从Firebase返回查询快照?

时间:2018-05-22 01:59:16

标签: swift firebase google-cloud-firestore

在swift中,如何在此代码中返回 func read(){ reference(to: .users).getDocuments() { (querySnapshot, err) in if let err = err { print("Error getting documents: \(err)") } else { for document in querySnapshot!.documents { print("\(document.documentID) => \(document.data())") } } } }

read()

上面的代码从firebase读取数据并在else语句中输出数据。我想从视图控制器调用read()函数,querySnaphot!.documents应该返回func read() -> QuerySnaphot{ ... return querySnapshot!.documents 。如果我这样做,我怎么能这样做:

awk '{ $1 = "s10"; 
$4 >= 50000 && $4 <=150000; 
print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6""\t"$7"\t"$8"\t"$9}' infile > outfile 

它给我一个错误,它返回一个非空值

1 个答案:

答案 0 :(得分:1)

  

void函数中出现意外的非void返回值

您无法在缓冲区内返回值。而不是它,你可以使用完成处理程序。

 func read(_ completion:@escaping(_ querySnapshot:[QueryDocumentSnapshot])->Void){
   reference(to: .users).getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {

            if let documents = querySnapshot?.documents{
                completion(documents)
            }
        }

    }

<强>用法:

read { (documents) in

    for document in documents{

          print("\(document.documentID) => \(document.data())")
     }
}