Я пытаюсь добавить объект 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)
})
}
}
}
}
Может кто-нибудь помочь?
Для достижения этой линии self.posts.append(posst) должны быть выполнены по крайней мере четыре условия. Сначала вы должны убедиться, что вы отладили свой код, чтобы добраться до этой строки. Во-вторых, расскажите, как вы получаете доступ к добавленному результату? Сообщения будут добавляться в результате асинхронных вызовов, когда вам нужно убедиться, что вы получаете доступ к объектам сообщений после выполнения всех асинхронных вызовов.
@Kamran Я получаю доступ к добавленному результату, отображая posts в представлении коллекции. И что вы подразумеваете под асинхронными вызовами? Я не очень продвинутый.



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