Почему я не могу получить доступ к массивам за пределами замыкания? - PullRequest
0 голосов
/ 11 апреля 2020

Код ниже - это функция, которая извлекает данные из базы данных Firebase и добавляет их в массивы. Я пытаюсь получить доступ к массивам вне функции, но массивы отображаются как пустые. Я считаю, что это потому, что я использую self при добавлении данных в массивы, однако я не знаю, как решить эту проблему. Я был бы очень признателен, если бы кто-то мог помочь мне с этим.

Код для функции -

db.collection("paper").getDocuments { (snapshot, error) in
            print("after")
            if let error = error {
                print(error)
                return
            }
            else {
                for document in snapshot!.documents {

                    let databaseData = document.data()
                    let name = databaseData["name"] as? String ?? ""
                    let category = databaseData["category"] as? String ?? ""
                    let firstLetter = name.prefix(1)
                    let storageRef = Storage.storage().reference()
                    let imageRef = storageRef.child("Paper/\(name).jpg")
                    imageRef.getData(maxSize: 1000 * 1024) { data, error in

                        if let error = error {
                            print(error)
                            return
                        }
                        else {
                            let image = UIImage(data: data!)
                            if firstLetter == "A" {
                                self.aData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "B" {
                                self.bData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "C" {
                                self.cData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "D" {
                                self.dData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "E" {
                                self.eData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "F" {
                                self.fData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "G" {
                                self.gData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "H" {
                                self.hData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "I" {
                                self.iData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "J" {
                                self.jData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "K" {
                                self.kData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "L" {
                                self.lData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "M" {
                                self.mData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "N" {
                                self.nData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "O" {
                                self.oData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "P" {
                                self.pData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "Q" {
                                self.qData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "R" {
                                self.rData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "S" {
                                self.sData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "T" {
                                self.tData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "U" {
                                self.uData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "V" {
                                self.vData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "W" {
                                self.wData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "X" {
                                self.xData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else if firstLetter == "Y" {
                                self.yData += [CellData.init(image: image, message: name, category: category)]
                            }
                            else {
                                self.zData += [CellData.init(image: image, message: name, category: category)]
                            }
                            print("inside")
                        }
                    }
                }
                self.tableView.reloadData()
                self.setupAlphaHeaderArray()
            }
        }

Код для настройкиAlphaHeaderArray-

        if aData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "A")]
        }
        if bData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "B")]
        }
        if cData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "C")]
        }
        if dData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "D")]
        }
        if eData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "E")]
        }
        if fData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "F")]
        }
        if gData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "G")]
        }
        if hData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "H")]
        }
        if iData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "I")]
        }
        if jData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "J")]
        }
        if kData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "K")]
        }
        if lData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "L")]
        }
        if mData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "M")]
        }
        if nData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "N")]
        }
        if oData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "O")]
        }
        if pData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "P")]
        }
        if qData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "Q")]
        }
        if rData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "R")]
        }
        if sData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "S")]
        }
        if tData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "T")]
        }
        if uData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "U")]
        }
        if vData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "V")]
        }
        if wData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "W")]
        }
        if xData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "X")]
        }
        if yData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "Y")]
        }
        if zData.count > 0 {
            alphaHeaderArray += [AlphaHeader.init(label: "Z")]
        }

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