将来自firebase子键值对的数据存储为数组

时间:2016-09-17 15:25:59

标签: swift firebase firebase-realtime-database

如何将firebase中的键值对存储到数组中?我已经尝试编写代码以从本地数组向firebase发送一些数据,并注意到它们以这样的形式存储:

enter image description here

注意'奖牌'孩子被存储。

我试图从奖牌'中拍摄数组的快照。对象并在swift中将其作为数组返回。

let databaseRef = FIRDatabase.database().reference()
        databaseRef.child("users").child(userID!).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
            // Get user medals
            self.identities3 = snapshot.value!["medals"] as! [String]

        })

我知道这很粗糙,但是会有效吗?

谢谢!对firebase和学习来说还是新手:)

2 个答案:

答案 0 :(得分:1)

考虑将您的JSON结构更改为: -

public class UserStore : UserStore<User, Role, AppDbContext, string, UserClaim, UserRole, UserLogin, UserToken>

要检索: -

Swift 3

Medals: {
       Shield : true,
       Tie : true 
      }

Swift 2

  let array = [String]()
   FIRDatabase.database().reference().child("users")child(FIRAuth.auth()!.currentUser!.uid).child("medals").observeSingleEvent(of: .value, with: {(snap) in


        if let snapDict = snap.value as? [String:AnyObject]{


            for each in snapDict{

                print(each.key)
                self.array.append(each.key)
            }
        }
    })

答案 1 :(得分:1)

试试这个:

let databaseRef = FIRDatabase.database().reference()
    databaseRef.child("users").child(userID!).child("medals").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        // Get user medals
        self.identities3 = snapshot.value as! [String]

    })