Почему значения в массиве внезапно исчезают? стриж - PullRequest
2 голосов
/ 11 апреля 2020

Я новичок в Swift и мне интересно, почему массив пуст в конце функции в строке print("array printed2: \(newArr)"), когда в первом операторе печати print("array printed1: \(newArr)") он заполнен данными.

Есть ли у кого-нибудь какие-либо исправления или предложения о том, как сохранить данные в массиве?

Заранее спасибо, код для функции приведен ниже.

func testRdArr(){

         var newArr=[Establishment]()
          print("Downloading club data...")
           let db = Firestore.firestore()


               db.collection("clubs").getDocuments() { (querySnapshot, err) in
                   if let err = err {
                       print("Error getting documents: \(err)")
                   } else {
                       for document in querySnapshot!.documents {
                          let data = document.data()





                         let name = data["Name"] as? String ?? "Name Unknown"
                         let description = data["description"] as? String ?? "Description Uknown"
                         let imageURL1 = data["imgUrl"] as? String ?? "Image Unknown"
                         let coordX = data["coordX"] as? String ?? "Unknown"
                         let coordY = data["coordY"] as? String ?? "Unknown"
                         let openingTimes=data["openingTimes"] as? [String] ?? ["Unknown"]
                         let weeklyEvents=data["weekly events"] as? [String] ?? ["Unknown"]
                         let postcode=data["postcode"] as? String ?? "Unknown"
                         let id = document.documentID


                        let x = Establishment(name: name, imageURL1: imageURL1, coordX: coordX, coordY: coordY, postcode: postcode, openingTimes: openingTimes, weeklyEvents: weeklyEvents, description: description, type: "club", id: id)


                           newArr.append(x)

                       }
                   }
                //line below prints the populated array
                print("array printed1: \(newArr)")
                print("end of printing array")
               }
           //at this point array becomes empty, why does this happen and how would you suggest 
           //fixing it?
           print("array printed2: \(newArr)")

      }

1 Ответ

0 голосов
/ 11 апреля 2020

Загрузка происходит в фоновом режиме и завершается после печати в нижней части функции. Это не стало пустым. Эта строка произошла до завершения загрузки.

См .: Ожидание завершения асинхронного вызова функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...