Dravidian
Dravidian

Reputation: 9945

Creating and appending arrays in Firebase-ios-swift

How to create an array in the firebase 3.0 and perform the functions of append and delete in the array

This is the data structure i am looking for:-

1-UserIds
  --0.)   12345
  --1.)   678910
  --2.)   1112131415
2-UserProfile
  --0.)  12345
         -0.)  userName : "Rayega"
         -1.)  friends : ["Julian","Mary","Powers"]
  --1.)  678910
         -0.)  userName : "Morse"
         -1.)  friends : ["Polme","Mary","Finn"]
  --2.)  1112131415
         -0.)  userName : "Tanya"
         -1.)  friends : ["Ester","Hulio","Julian"]

i want to create an array like UserIds and like friends in every child of my user profile and be able to append and delete data from those arrays.I know how to create a dictionary but how would i go around storing an array in that dictionary and be able to perform append and delete functions in it.

I am storing UserIds array because i need to display info of every user in a tableView.

Upvotes: 1

Views: 2091

Answers (2)

Frank van Puffelen
Frank van Puffelen

Reputation: 598740

As the links provided by Ivan explain, arrays are seldom a good idea in a database where multiple users are concurrently adding/changing the data. There also seems to be no need to store the friend list as an array. It's actually more efficient to store it as a set of user ids. That way, you're automatically guaranteed that each user id can be in the set only once.

Users: {
   12345: "Rayega",
   67890: "Morse",
   24680: "Tanya",
   13579: "Julian",
   86420: "Mary",
   97531: "Powers"
},
UserFriends: {
   12345: {
      13579: true,
      86420: true,
      97531: true
   },
   67890: {
      86420: true,
      24680: true,
      97531: true
   }
}

That last structure is called an index and is covered in the Firebase documentation under creating data that scales.

Upvotes: 3

Ivan C Myrvold
Ivan C Myrvold

Reputation: 840

There is no native support for arrays in Firebase. But you can store the objects as a dictionary with an integer as key, and increment the key for every object you store. Then when you read from Firebase, the server will render the data as an array for you.

Upvotes: 2

Related Questions