如何在转换快照后使用Snapshot.children进行循环?

问题描述 投票:2回答:1

我曾经使用for val in snap.children过去以正确的顺序循环数据。 (否则数据将不会循环数据如何在数据库中格式化并且会期望)。

然而,现在我有数据,我传递给一个存储数据的对象,然后在另一个VC中使用它。

func fetchAllUserFirstPostMedia(user: String) {

    let databaseN = Database.database().reference()


        databaseN.child("Posts").child(user).observe(.value, with: {(snapshot) in

            guard snapshot.value as? [String: AnyObject] != nil else { return print("\(snapshot.value) <-- this is snapshot.value in return statement") }

            let userUID = user

            if user == userUID {

                guard let postDictionary = snapshot.value as? [String:AnyObject] else { return }

                for anyPosts in postDictionary {
                    print("inside the anyPosts")

                    let currentPost = Post()

                    let userObj = User(theuserID: userUID)
                    self.retrieveUsersInfo(userObj: userObj)



                        guard let posts = anyPosts.value as? [String:AnyObject] else { return }
/

/I pass this posts value into an object later in the code (object.snapshot = posts)

...

然而,从另一个VC我无法循环使用.children,或者至少它似乎是这样。有没有办法可以将类型转换为DataSnapshot并以这种方式循环?这里有什么解决方案?

ios swift firebase firebase-realtime-database swift4
1个回答
0
投票

免责声明:假设您的密钥是数字或具有数字值。

我相信你可能想做的事情如下:

在您的第二个VC中,您可以使用如下所示的行来对字典值进行排序。因此,如果你做了.children,你应该最终得到同样的东西。只有你会绕过.values

斯威夫特4:

 dictionary = [String : AnyObject](uniqueKeysWithValues: dictionary.sorted{ $0.key < $1.key })
© www.soinside.com 2019 - 2024. All rights reserved.