Расположение оператора добавления, вызывающего проблемы

Я пытаюсь добавить объект ViewingPost к массиву этих объектов. Это работает, когда я делаю то, что показано здесь:

     for (_,post) in snap {

                let posst = ViewingPost()

                if let totLikes = post["likes"] as? Int, let pathToImage = post["pathToImage"] as? String, let postID = post["postID"] as? String {

                    let postNum = "post" + postID

                    posst.pathToImage = pathToImage
                    posst.postID = postID
                    posst.likes = totLikes
                    self.posts.append(posst)

                    for key in 1 ... arr.count {

                        let isEq = arr[key - 1] == postNum
                        print(isEq)
                        if isEq {
                            ref.child(formattedDateD).child(postNum).observeSingleEvent(of: .value, with: { (snapsh) in
                                let snapshP = snapsh.value as! Int

                            })
                        }
                    }
                }
            }

Хотя, когда я перемещаю часть, в которой он добавляет объект в массив, туда, где я хочу, он перестает работать:

           for (_,post) in snap {

                let posst = ViewingPost()

                if let totLikes = post["likes"] as? Int, let pathToImage = post["pathToImage"] as? String, let postID = post["postID"] as? String {

                    let postNum = "post" + postID


                    for key in 1 ... arr.count {

                        let isEq = arr[key - 1] == postNum
                        print(isEq)
                        if isEq {
                            ref.child(formattedDateD).child(postNum).observeSingleEvent(of: .value, with: { (snapsh) in
                                let snapshP = snapsh.value as! Int

                                posst.pathToImage = pathToImage
                                posst.postID = postID
                                posst.likes = totLikes
                                self.posts.append(posst)
                            })
                        }
                    }
                }
            }

Может кто-нибудь помочь?

Как скоро вы вызываете массив после добавления объекта? Возможно, вы вызываете его до того, как у него появится возможность получить данные, поскольку они находятся внутри замыкания.

Nick Griffith 26.07.2018 08:13

Для достижения этой линии self.posts.append(posst) должны быть выполнены по крайней мере четыре условия. Сначала вы должны убедиться, что вы отладили свой код, чтобы добраться до этой строки. Во-вторых, расскажите, как вы получаете доступ к добавленному результату? Сообщения будут добавляться в результате асинхронных вызовов, когда вам нужно убедиться, что вы получаете доступ к объектам сообщений после выполнения всех асинхронных вызовов.

Kamran 26.07.2018 08:46

@Kamran Я получаю доступ к добавленному результату, отображая posts в представлении коллекции. И что вы подразумеваете под асинхронными вызовами? Я не очень продвинутый.

Arjun Dixit 26.07.2018 09:14
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
3
28
0

Другие вопросы по теме