【发布时间】:2020-05-02 15:30:50
【问题描述】:
我是一名 swift 和 Firebase 初学者,我遇到了一个让我很困惑的问题。我们都知道下面的代码
var a = [Int]()
for i in 0..2{
a.append(i)
print(a)
print(a)
应该给我输出
[0]
[0,1]
[0,1,2]
[0,1,2]
结果是真的。但是,当我处理 getDocument() 并编写类似的逻辑代码时,输出很奇怪!代码如下。
override func viewDidLoad() {
super.viewDidLoad()
let docSecond = getThirtyData()
getDataContent(thirtyData: docSecond)
}
func getThirtyData()->Array<Int>{
var querySecond = [Int]()
var docSecond = [Int]()
let postDoc = db.collection("announcement")
postDoc.getDocuments { (querySnapshot, err) in
if let err = err{
print("Error getting documents: \(err)")
}else{
for document in querySnapshot!.documents{
//print(document.data()["postTimeSecondInt"] as! Int)
querySecond.append(document.data()["postTimeSecondInt"] as! Int)
}
for _ in 1...querySecond.count{
let max = querySecond.max()!
docSecond.append(max)
let index = querySecond.firstIndex(of: max)
querySecond.remove(at: index!)
}
print(docSecond)
print("123")
}
}
print(docSecond)
print("456")
return docSecond
}
func getDataContent(thirtyData: [Int]){
print(thirtyData)
print("789")
}
我认为结果可能与首先打印“123”,然后是“456”,然后是“789”的逻辑相同。但是,结果如下所示。
[]
456
[]
789
[1588428987, 1588428980, 1588427392]
123
似乎它与 for 循环同时运行下面的代码行。谁能解释为什么会这样?
【问题讨论】:
标签: ios swift firebase google-cloud-firestore