Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用swift从firebase中的JSON文件获取电子邮件id_Ios_Json_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios 如何使用swift从firebase中的JSON文件获取电子邮件id

Ios 如何使用swift从firebase中的JSON文件获取电子邮件id,ios,json,swift,firebase,firebase-realtime-database,Ios,Json,Swift,Firebase,Firebase Realtime Database,我想这样问:如果我给电子邮件,那么我必须获得ID。目前我可以获取电子邮件或ID,但我需要以下示例的解决方案 比如说 1) 如果我给出sandeep@gmail.com然后我需要它的ID为123 如何在swift中实现这一点 这是我的JSON文件: { "ID": 123, "Membership": 1234, "title": "Mr.", "firstname": "kumar", "lastname": "sandeep", "email": "sand

我想这样问:如果我给电子邮件,那么我必须获得ID。目前我可以获取电子邮件或ID,但我需要以下示例的解决方案

比如说 1) 如果我给出
sandeep@gmail.com
然后我需要它的ID为
123

如何在swift中实现这一点

这是我的
JSON
文件:

{
   "ID": 123,
   "Membership": 1234,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep",
   "email": "sandeep@gmail.com",
   "membrshipstatus": "Active",
   "volunteer": "Yes",
   "creationDate": "2016-12-27 "
 },

{
   "ID": 452,
   "Membership": 4531,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep",
   "email": "harry@gmail.com",
   "membrshipstatus": "Active",
   "volunteer": "Yes",
   "creationDate": "2016-11-17 "
 },
这是我的
Swift
代码:

    import UIKit
    import Firebase
    import FirebaseAuth

    class ViewController: UIViewController {

        @IBOutlet weak var emailofUser: UITextField!
        @IBOutlet weak var passwordofUser: UITextField!
        var ref:FIRDatabaseReference! //created a variable ref of type firebase database reference
        var databaseHandle:FIRDatabaseHandle? //to handle to database listener like to stop or start it


        var postdata = [String]?()
        var postall = [[String:String]]()


        override func viewDidLoad() {
            super.viewDidLoad()

            //set firebase reference
            ref = FIRDatabase.database().reference()

ref.child("1").child("email").observeEventType(.Value, withBlock: { snapshot in

            let emailid = snapshot.value as? String

            print(emailid)
        })

ref.child("1").child("ID").observeEventType(.Value, withBlock: { snapshot1 in

            let userID = snapshot1.value as? Int

            print(userID)
        })

            ref.queryOrderedByValue().observeEventType(.ChildAdded, withBlock: { snapshot2 in
                if let parentname = snapshot2.value as? Int {
                    print("The \(snapshot2.key) dinosaur's score is \(parentname)")
                }
            })
        }
    }
与此JSON图像相关的Swift代码:

override func viewDidLoad() {
        super.viewDidLoad()



            //set firebase reference
        ref = FIRDatabase.database().reference()

        let userRef = ref.child("1")

        //let queryRef = userRef.queryOrderedByChild("email").queryEqualToValue("mr.stefankirsch@gmx.com")


        userRef.queryOrderedByChild("email").queryEqualToValue("mr.stefankirsch@gmx.com").observeEventType(.Value, withBlock: { snapshot in

            for child in snapshot.children{

            let snap = child as! FIRDataSnapshot

                let userDict = snap.value as! [String:Any]

                let userId = userDict["ID"]
                let lastname = userDict["lastname"]
                print("\(userId!)  \(lastname!)")


            }
                    })

通常,您应该使用用户的uid在用户节点中存储数据。假设您的用户节点名为/users。。。像这样

users
  uid_0
   "ID": 123,
   "Membership": 1234,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep",
   "email": "sandeep@gmail.com"
  uid_1
   "ID": 452,
   "Membership": 4531,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep"
   "email": "harry@gmail.com"
下面是一个查询,用于获取您要查询的数据

let usersRef = ref.child("users")
let queryRef = usersRef.queryOrdered(byChild: "email")
                       .queryEqual(toValue: "sandeep@gmail.com")
queryRef.observeSingleEvent(of: .value, with: { (snapshot) in

     for child in snapshot.children {
          let snap = child as! FIRDataSnapshot
          let userDict = snap.value as! [String: Any]
          let userId = userDict["ID"]
          let lastname = userDict["lastname"]
          print("\(userId!)  \(lastname!)")
      }
})
结果显示:

123  sandeep

很抱歉,我的问题可能重复了。例1)如果我给sandeep@gmail.com那我需要它的ID是123。如何在swift中实现这一点?这是Firebase中的基本查询。请看我的答案,并特别阅读排序和过滤数据部分。嗨,杰伊,我尝试了这段代码,但它没有打印任何东西。请帮忙。@sandepkumat我复制并粘贴了一个工作项目中的代码。确保您的Firebase结构与答案中的匹配。原始问题中没有包含JSON结构的完整片段,因此我必须假设一个结构。嗨,Jay,我只是根据JSON结构添加了JSON图像和代码。请验证我的代码。非常感谢。@sandepkumat这可能是让userRef=ref.child(“1”)的问题,但是如果没有父节点,json结构仍然不完整。