我曾经使用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并以这种方式循环?这里有什么解决方案?
免责声明:假设您的密钥是数字或具有数字值。
我相信你可能想做的事情如下:
在您的第二个VC中,您可以使用如下所示的行来对字典值进行排序。因此,如果你做了.children
,你应该最终得到同样的东西。只有你会绕过.values
斯威夫特4:
dictionary = [String : AnyObject](uniqueKeysWithValues: dictionary.sorted{ $0.key < $1.key })