Как я могу получить данные из моментальной копии Firebase в Swift, используя функцию в структуре? - PullRequest
0 голосов
/ 01 ноября 2019

Я получаю данные из Cloud Firestore для заполнения ListView. Мне удалось получить данные в массив, но когда я возвращаю массив, он отображается пустым.

// Edit

Я реализовал обработчик завершения, отлично работает для'Test Code', но когда вызывается в 'func industryPosts' и передается в 'myArray', возвращается ноль. Пока «Тестовый код» возвращает данные. Я новичок в обработчиках завершения и Swift в целом. Пожалуйста, дайте мне знать, что я скучаю. Спасибо.

// Редактировать Я не смог вернуть значения, но вызов IndustryPosts, где мне нужно было использовать его, сработал!

import Foundation
import SwiftUI

class IndustryData {

    var _snapshotArray : Array<Any>?

    func getSnapshotArray(collectionRef: String, completionHandler: @escaping (Array<Any>?, NSError?) -> ()){

        if let snapArray = self._snapshotArray {
            completionHandler(snapArray, nil)
        } else {

            var snapArray : Array<Any> = []

            db.collection(collectionRef).getDocuments { (snapshot, error) in
                guard let snapshot = snapshot else {
                    print("Error - > \(String(describing: error))")
                    return
                }

                for document in snapshot.documents {
                    let item = Industry(avatar: document.get("avatar") as! String, name:document.documentID, tags: document.get("tags") as! String)
                    snapArray.append(item)
                }
                self._snapshotArray = snapArray
                completionHandler(snapArray, error as NSError?)
            }
        }
    }
}

Затем, при необходимости, вызовите функцию ниже

func getposts()-> [Industry] {
        let data = IndustryData()
        data.getSnapshotArray(collectionRef: "industry") { (snapshotArray, error) in
            if snapshotArray != nil {
                self.myArray = snapshotArray!
            }
        }
        return myArray as! [Industry]
    }

myArray вернул промышленный массив!

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