Android - Firebase:相当于将所有databasereference用户列为swift的代码

时间:2018-04-03 16:02:03

标签: java android swift firebase firebase-realtime-database

我刚开始使用Android,我只是Swift,我需要帮助来翻译以下代码并在字符串数组中输入我数据库的所有用户:

//On va recuperer la liste de toute les donnees de la BDD
        let ref: DatabaseReference! = Database.database().reference()
        let query = ref.child("Users").queryOrdered(byChild: "Name") //Ceux qui on l'enfant Users
        query.observeSingleEvent(of: .value) {
            (snapshot) in
            for child in snapshot.children.allObjects as! [DataSnapshot] {
                let value = child.value as? NSDictionary

                //On va rentrer les donnees dans des string
                let name = value?["Name"] as? String ?? ""
                let mail = value?["Email"] as? String ?? ""
                let phone = value?["Phone"] as? String ?? ""
                let id = value?["ID"] as? String ?? ""

                //Avec les string on creer l'objet
                let user: User = User(mail: mail, phone: phone, name: name)
                user.id = id

                //On l'ajoute au arraylIST
                self.users.append(user)
            }
            //Et on raffraichi le listView
            self.tableView.reloadData()
        }

1 个答案:

答案 0 :(得分:0)

这是你在Android中编写swift代码的方法:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("Users").orderByChild("Name");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<User> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("Name").getValue(String.class);
            String mail = ds.child("Email").getValue(String.class);
            String phone = ds.child("Phone").getValue(String.class);
            String id = ds.child("ID").getValue(String.class);

            User user = new User(mail, phone, name);
            //User user = new User(id, mail, phone, name);
            list.add(user);
        }
        Log.d("TAG", list.toString());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(valueEventListener);

如您所见,代码中有一条注释行。如果具有使用4个参数(包括id)的构造函数,则可以取消注释该行。